原创 | TDD 工具集:JUnit、AssertJ 和 Mockito (十七) 编写测试 - 标签和过滤



重要性:★★★★☆
测试类和测试方法可以用@Tag注解打标签,这些标签随后可用于在测试发现和执行中作为测试筛选条件。
可以对同一个测试方法或测试类多次声明@Tag注解,也可以通过@Tags组合多个标签。
1. 标签的语法规则
@Tag注解里面的标签值必须遵守下面的规则:
- 标签不能是null或空字符串 
- 去除两端空白字符后的标签中不能包含空白字符(空格、制表符、回车、换行符等等) 
- 去除两端空白字符后的标签中不能包含ISO控制字符 
- 去除两端空白字符后的标签中不能包含下列的保留字符:,()&!| 
标签两端如果有空白字符(空格、制表符、回车、换行符等等),将被自动去除。
2. 在构建系统中根据标签过滤测试
2.1 在Maven中根据标签过滤测试
例如,为了将快速的单元测试和慢速的集成测试分开,我们分别用@Tag("Unit")和@Tag("Integration")来注解它们。在Maven中,我们可以配置surefire插件来分别筛选单元测试和集成测试。
在上面的pom.xml的maven-surefire-plugin测试插件中,我们配置了两个execution,分别设置单元测试和集成测试。其中id为unit-test的execution绑定到test阶段,排除掉注解了@Tag("integration")或@Tag("acceptance")的测试。而id为integration-test的execution绑定到integration-test阶段,只包含注解了@Tag("integration")的测试。这样,当执行maven构建流水线时,到达单元测阶段就会执行没有包含注解@Tag("integration")和@Tag("acceptance")注解的测试,到达集成测试阶段就会执行包含了@Tag("integration")注解的测试。
说明:
- <groups>元素定义要包含在测试中的标签。而- <excludedGroups>元素定义要排除的标签。
- <groups>和- <excludedGroups>元素都支持多个标签项,可以用逗号“- ,”分隔各个标签项。
- 可以使用Tag表达式来表达多个标签的组合。操作符包括 - &、- |、- !和- ()。例如- <groups>(A | B) & !C</groups>表示包含那些被- @Tag("A")或- @Tag("B")注解、但没有被- @Tag("A")注解的测试。
- <groups>和- <excludedGroups>可以同时使用。例如:
2.2 在Gradle中根据标签过滤测试
在build.gradle文件的test节中定义类似下面的内容:
标签表达式和Maven中的相同。
这一节我们就分享到这里,下一节我们讲“编写测试的测试执行顺序”。


版权声明: 本文为 InfoQ 作者【编程道与术】的原创文章。
原文链接:【http://xie.infoq.cn/article/c14c99339d0b5f487be247745】。文章转载请联系作者。













 
    
评论