在众多待测试的类中,Categories
runner 只运行那些带有@IncludeCategory注解或者其子类型的类或者方法。
类和接口都可以被用来当做 categories。
如果在测试类上标注@IncludeCategory(SuperClass.class),那么标注为 @Category({SubClass.class})也将会被执行。
你也可以通过使用 @ExcludeCategory 注解来排除某些类别。
例子:
public interface FastTests { /* 类别标识 */ }
public interface SlowTests { /* 类别标识*/ }
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 }) // 注意Categories 是一种套件
public class SlowTestSuite {
// 将运行A.b 和B.c,但不运行A.a (因为A.a方法没有Category注解,并且也是SlowTests实现类和子类)
}
@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@ExcludeCategory(FastTests.class)
@SuiteClasses( { A.class, B.class }) // 注意Categories 是一种套件
public class SlowTestSuite {
// 将运行A.b ,但不运行A.a和B.c(因为A.a方法没有Category注解,并且也是SlowTests实现类和子类;B.c 也属于SlowTests类别)
}