| <h2>Summary of Changes in version 4.8</h2> |
| |
| <h3>Categories</h3> |
| |
| <p>From a given set of test classes, the <code>Categories</code> runner |
| runs only the classes and methods |
| that are annotated with either the category given with the <code>@IncludeCategory</code> |
| annotation, or a subtype of that category. Either classes or interfaces can be |
| used as categories. Subtyping works, so if you say <code>@IncludeCategory(SuperClass.class)</code>, |
| a test marked <code>@Category({SubClass.class})</code> will be run.</p> |
| |
| <p>You can also exclude categories by using the <code>@ExcludeCategory</code> annotation</p> |
| |
| <p>Example:</p> |
| |
| <pre><code>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 |
| } |
| </code></pre> |
| |
| <h3>Bug fixes</h3> |
| |
| <ul> |
| <li>github#16: thread safety of Result counting</li> |
| </ul> |