相关文章
- 深入探索:单元测试之Test runners
- 深入探索:单元测试之基于 suites 的聚合测试
- 深入探索:单元测试之测试执行顺序
- 深入探索:单元测试之异常测试
- 深入探索:单元测试之Ignnore测试和TimeOut测试
- 深入探索:单元测试之Categories
- 深入探索:单元测试之Assertions
Categories 的使用
从给定的一组测试类集,Categories runner 仅仅是运行类 和 方法 ,他们都会被**@IncludeCategory ** 注解标记分类,或被 category 的子类型标记。 类和接口都能被 用于 category 。分类的作品,如果你说是@IncludeCategory(SuperClass.class), 那么测试被标记为 @Category({SubClass.class}) 将会被运行。
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
}
使用 Maven 整合categories
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<groups>com.example.FastTests,com.example.RegressionTests</groups>
</configuration>
</plugin>
</plugins>
</build>
使用 Gradle整合categories
test {
useJUnit {
includeCategories 'org.gradle.junit.CategoryA'
excludeCategories 'org.gradle.junit.CategoryB'
}
}
使用 SBT categories
SBT's junit-interface 允许特定的 JUnit categories 例如: --include-categories=<CLASSES> 和 --exclude-categories=<CLASSES>.
categories 的典型用法
Categories 常用于在测试中添加元数据。
常见的分类用法是: 自动测试的类型: UnitTests(单元测试), IntegrationTests(集成测试), SmokeTests(冒烟测试), RegressionTests(回归测试), PerformanceTests(性能测试) ... 测试执行快慢: SlowTests, QuickTests 在CI的哪部分构建测试应该被执行: NightlyBuildTests(每日构建的测试) 测试状态: UnstableTests(不稳定测试), InProgressTests(进行测试) 这也用于添加特定于项目的元数据,如项目的哪些特性被测试覆盖。
看到JUnit在GitHub托管项目类别用途: See usages of Junit Categories on github hosted projects
参考
Categories javadoc : https://github.com/junit-team/junit4/wiki/Categories