001package org.junit.experimental.categories;
002
003import java.lang.annotation.Inherited;
004import java.lang.annotation.Retention;
005import java.lang.annotation.RetentionPolicy;
006
007import org.junit.validator.ValidateWith;
008
009/**
010 * Marks a test class or test method as belonging to one or more categories of tests.
011 * The value is an array of arbitrary classes.
012 *
013 * This annotation is only interpreted by the Categories runner (at present).
014 *
015 * For example:
016 * <pre>
017 * public interface FastTests {}
018 * public interface SlowTests {}
019 *
020 * public static class A {
021 * &#064;Test
022 * public void a() {
023 * fail();
024 * }
025 *
026 * &#064;Category(SlowTests.class)
027 * &#064;Test
028 * public void b() {
029 * }
030 * }
031 *
032 * &#064;Category({SlowTests.class, FastTests.class})
033 * public static class B {
034 * &#064;Test
035 * public void c() {
036 *
037 * }
038 * }
039 * </pre>
040 *
041 * For more usage, see code example on {@link Categories}.
042 */
043@Retention(RetentionPolicy.RUNTIME)
044@Inherited
045@ValidateWith(CategoryValidator.class)
046public @interface Category {
047    Class<?>[] value();
048}