| ## Summary of Changes in version 4.8 ## |
| |
| ### Categories ### |
| |
| From a given set of test classes, the `Categories` runner |
| runs only the classes and methods |
| that are annotated with either the category given with the `@IncludeCategory` |
| annotation, or a subtype of that category. Either classes or interfaces can be |
| used as categories. Subtyping works, so if you say `@IncludeCategory(SuperClass.class)`, |
| a test marked `@Category({SubClass.class})` will be run. |
| |
| You can also exclude categories by using the `@ExcludeCategory` annotation |
| |
| Example: |
| |
| public interface FastTests { /* category marker */ } |
| public interface SlowTests { /* category marker */ } |
| |
| public class A { |
| @Test |
| public void a() { |
| fail(); |
| } |
| |
| @Category(SlowTests.class) |
| @Test |
| public void b() { |
| } |
| } |
| |
| @Category({SlowTests.class, FastTests.class}) |
| public class B { |
| @Test |
| public void c() { |
| |
| } |
| } |
| |
| @RunWith(Categories.class) |
| @IncludeCategory(SlowTests.class) |
| @SuiteClasses( { A.class, B.class }) // Note that Categories is a kind of Suite |
| public class SlowTestSuite { |
| // Will run A.b and B.c, but not A.a |
| } |
| |
| @RunWith(Categories.class) |
| @IncludeCategory(SlowTests.class) |
| @ExcludeCategory(FastTests.class) |
| @SuiteClasses( { A.class, B.class }) // Note that Categories is a kind of Suite |
| public class SlowTestSuite { |
| // Will run A.b, but not A.a or B.c |
| } |
| |
| ### Bug fixes ### |
| |
| - github#16: thread safety of Result counting |