Class Categories

All Implemented Interfaces:
Describable, Filterable, Orderable, Sortable

public class Categories extends Suite
From a given set of test classes, runs only the classes and methods that are annotated with either the category given with the @IncludeCategory annotation, or a subtype of that category.

Note that, for now, annotating suites with @Category has no effect. Categories must be annotated on the direct method or class.

Example:

public interface FastTests {
}

public interface SlowTests {
}

public interface SmokeTests
}

public static class A {
    @Test
    public void a() {
        fail();
    }

    @Category(SlowTests.class)
    @Test
    public void b() {
    }

    @Category({FastTests.class, SmokeTests.class})
    @Test
    public void c() {
    }
}

@Category({SlowTests.class, FastTests.class})
public static class B {
    @Test
    public void d() {
    }
}

@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@SuiteClasses({A.class, B.class})
// Note that Categories is a kind of Suite
public static class SlowTestSuite {
    // Will run A.b and B.d, but not A.a and A.c
}

Example to run multiple categories:

@RunWith(Categories.class)
@IncludeCategory({FastTests.class, SmokeTests.class})
@SuiteClasses({A.class, B.class})
public static class FastOrSmokeTestSuite {
    // Will run A.c and B.d, but not A.b because it is not any of FastTests or SmokeTests
}
Version:
4.12
See Also: