Junit4 分类测试
精华
小牛编辑
107浏览
2023-03-14
1 Junit分类测试的介绍
从给定的一组测试类中,类别运行器仅运行用@IncludeCategory批注指定的类别或该类别的子类型进行批注的类和方法。类或接口都可以用作类别。子类型有效,因此,如果您说@IncludeCategory(SuperClass.class),则会运行标记为@Category({SubClass.class})的测试。
您还可以使用@ExcludeCategory 注解排除类别
例:
public interface FastTests { /* category marker */ }
public interface SlowTests { /* category marker */ }
/**
* 小牛知识库网: https://www.xnip.cn
*/
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
}
2 在Maven中进行分类测试
您可以将类别与 maven-surefire-plugin (用于单元测试)或 maven-failsafe-plugin(用于集成测试)一起使用。使用任何一个插件,您都可以配置要包括或排除的类别列表。不使用任何一个选项,默认情况下将执行所有测试。
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<groups>com.example.FastTests,com.example.RegressionTests</groups>
</configuration>
</plugin>
</plugins>
</build>
同样,要排除某些类别的列表,可以使用 <excludedGroups/>configuration元素。
3 在Gradle中进行分类测试
Gradle的测试任务允许您指定要包括和排除的JUnit类别。
test {
useJUnit {
includeCategories 'org.gradle.junit.CategoryA'
excludeCategories 'org.gradle.junit.CategoryB'
}
}
4 在SBT中进行分类测试
SBT的 JUnit接口 允许通过--include-categories=<CLASSES> 和 规范JUnit类别 --exclude-categories=<CLASSES>。
5 分类测试的典型用法
类别用于在测试中添加元数据。
经常遇到的类别用法是关于:
- 自动化测试的类型:单元测试,集成测试,SmokeTests,回归测试,性能测试...
- 测试执行的速度:SlowTests,QuickTests
- 应该在ci构建的哪一部分中执行测试:NightlyBuildTests
- 测试状态:UnstableTests,InProgressTests
这还用于添加特定于项目的元数据,例如测试涵盖了项目的哪个功能。