您的位置:首页 > 编程语言 > Go语言

深入探索:单元测试之Categories

2017-09-11 00:00 411 查看
摘要: 从给定的一组测试类集,**Categories** runner 仅仅是运行类 和 方法 ,他们都会被**@IncludeCategory ** 注解标记分类,或被 category 的子类型标记。 类和接口都能被 用于 category 。分类的作品,如果你说是@IncludeCategory(SuperClass.class), 那么测试被标记为 @Category({SubClass.class}) 将会被运行。

相关文章

深入探索:单元测试之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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JUnit