maven-surefire-plugin
maven的构建深的生命周期的各个阶段的具体工作都是通过插件来实现的,测试也不例外,maven-surefire-plugin就是maven测试阶段默认绑定的插件。
maven-surefire-plugin默认会执行测试源码路径(src/test/java)下符合如下一组命名模式的测试类:
- **/Test*.java : 任何子目录下以Test开头的java类
- **/*Test.java:任何子目录下以Test结尾的java类
- **/*TestCase.java:任何子目录下以TestCase.java结尾的java类
当然该插件也支持自定义的测试类的命名模式。
跳过测试
跳过测试有两种方式:
1.skipTests : mvn package -DskipTests,编译测试类至target/classes下,不执行测试用例。
通过配置也可以实现:
2.maven.test.skip: mvn package -Dmaven.test.skip=ture , 不编译源码也不执行测试用例
配置实现的方式:
动态指令指定要运行的测试用例
maven-surefire-plugin,提供了 一个test参数让用户通过命令行输入命令来指定要运行的测试用例。
mvn test -Dtest=ATest,BTest,C*Test
maven-surefire-plugin 还提供了一个-DfailIfNoTest = false的参数让maven在没有测试类匹配的时候也不要报错,这也是另外一种跳过测试的方式
包含与排除测试用例
1、包含不符合默认类名模式的测试用例
2、排除一些符合默认命名模式的测试类
测试报告
1、基本的测试报告
maven-surefire-plugin 会在target/surefire-reports目录下生成两种格式的错误报告
- 简单文本格式
- 与Junit兼容的xml的格式
2、测试覆盖率报告
覆盖率测试报告是通过cobertura这个工具来实现的,使用方式:
maven cobertura:cobertura
然后打开目录 target/site/cobertura下的index.html文件就可以看到相关的测试覆盖率的测试报告
重用测试代码
我们有可能用到其他模块的的测试代码,那么我们就需要将重用的测试类打包:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
让后再通过配置依赖,将包引入:
注意type为:test-jar