1b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotpackage org.junit.experimental.categories;
2b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
3b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotimport java.lang.annotation.Retention;
4b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotimport java.lang.annotation.RetentionPolicy;
5b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
6b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot/**
7b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot * Marks a test class or test method as belonging to one or more categories of tests.
8b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot * The value is an array of arbitrary classes.
9b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot *
10b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot * This annotation is only interpreted by the Categories runner (at present).
11b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot *
12b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot * For example:
13b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot<pre>
14b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	public interface FastTests {}
15b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	public interface SlowTests {}
16b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
17b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	public static class A {
18b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		&#064;Test
19b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		public void a() {
20b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot			fail();
21b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		}
22b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
23b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		&#064;Category(SlowTests.class)
24b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		&#064;Test
25b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		public void b() {
26b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		}
27b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	}
28b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
29b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	&#064;Category({SlowTests.class, FastTests.class})
30b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	public static class B {
31b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		&#064;Test
32b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		public void c() {
33b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot
34b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot		}
35b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	}
36b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot</pre>
37b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot *
38b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot * For more usage, see code example on {@link Categories}.
39b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot */
40b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot@Retention(RetentionPolicy.RUNTIME)
41b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabotpublic @interface Category {
42b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot	Class<?>[] value();
43b3823db9f1192d8c81345740b3e65bd6738ba55bBrett Chabot}