大部分生命周期绑定Surefire插件的test目标至test阶段。Surefire插件是Maven的单元测试插件,Surefire默认的行为是寻找测试源码目录下所有以*Test结尾的类,以JUnit测试的形式运行它们。Surefire插件也可以配置成运行TestNG单元测试。
运行过mvn
test之后,你应该注意到Surefire在target/surefire-reports
目录生成了许多报告。该目录内每个Surefire插件运行过的测试都会有相关的两个文件:一个是包含测试运行信息的XML文档,另一个是包含单元测试输出的文本文件。如果测试阶段有问题,单元测试失败了,你可以使用Maven的输出以及该目录下的内容来追查测试失败的原因。在站点生成的时候,surefire-reports/
目录的内容会被用来创建报告,使项目所有单元测试的总体情况清晰明了。
如果你工作的项目有一些失败的单元测试,同时你想让项目生成输出,你需要配置Surefire插件在遇到失败的情况下继续一个构建。当遇到单元测试失败的时候,默认行为是停止构建。要覆盖这种行为,你需要设置Surefire插件的testFailureIgnore
配置属性为true。
Example 10.12. 配置Surefire忽略单元测试失败
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin> ... </plugins> </build>
如果你想要整个的跳过测试,你可以运行如下的命令:
$ mvn install -Dmaven.test.skip=true
maven.test.skip
变量同时控制Compiler和Surefire插件,如果你传入maven.test.skip
,就等于告诉Maven整个的跳过测试。