10.3.5. Test

大部分生命周期绑定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整个的跳过测试。