Maven安装通行证但有测试失败

时间:2016-02-07 19:06:54

标签: java spring maven junit spring-boot

我正在为STS中的多个模块的spring boot项目运行maven install。我可以看到,很少有测试用例失败,但maven安装通过并显示构建成功。测试没有被跳过,它们在安装阶段运行,而且还会在测试失败的情况下生成surefire报告,但不知何故构建通过了。我希望构建失败,因为测试失败,任何指针都被赞赏?

<properties>
    <maven-surefire-plugin-version>2.16</maven-surefire-plugin-version>
    <junit.version>4.12</junit.version>

    ...
    ...
</properties>
..
..
<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        ...
        ...
</dependency>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.16</version>
            </plugins>
            ...
            ...
            ...
    </pluginManagement>
</build>

Maven日志:

Results :

Failed tests: 
  MyClassTest.testMyClass:35 null

Tests in error: 
  MyClass1Test.testMyClass:64 » NullPointer

Tests run: 3, Failures: 1, Errors: 1, Skipped: 0

[ERROR] There are test failures.

Please refer to /Users/XXX/yyyy/zzzz/target/surefire-reports for the individual test results.
[INFO] 
[INFO] --- maven-war-plugin:2.6:war (default-war) @ zzzzz ---
[INFO] Packaging webapp
[INFO] Assembling webapp [zzzzz] in [/Users/XXXX/yyyyy/zzzz/target/zzzz-1.0.0]
[INFO] Processing war project
[INFO] Copying webapp resources [/Users/XXXX/zzzz/zzzz/src/main/webapp]
[INFO] Webapp assembled in [232 msecs]
[INFO] Building war: /Users/XXX/yyyyy/zzzzz/target/zzzzz-1.0.0.war

最后它只显示所有模块构建成功。一旦检测到失败,它是否应该立即停止建立战争?

由于

3 个答案:

答案 0 :(得分:3)

构建生命周期中的测试阶段由Surefire插件执行。其中一个选项testFailureIgnore用于执行测试并成功完成构建,而不管结果如何。这在向Sonar生成指标时非常有用。

激活此类选项的一种方法是使用-Dmaven.test.failure.ignore,也许您已在构建中启用了此选项。

答案 1 :(得分:1)

根据surefire-maven-plugin的文档,它不会因设计而导致测试失败。原因是:surefire-maven-plugin应该执行所有测试并提供一般统计数据。

如果您想节省时间,可以使用此参数:

<skipAfterFailureCount>N</skipAfterFailureCount>

在N个失败后停止执行测试。

maven-surefire-report-plugin可用于报告分析:

https://maven.apache.org/surefire/maven-surefire-report-plugin/

答案 2 :(得分:-1)

使用故障安全插件运行失败的测试有可能吗?这个插件不会使失败测试的构建失败,如documented on their site

  

如果使用Surefire插件运行测试,那么当测试失败时,构建将在集成测试阶段停止,并且集成测试环境不会被正确拆除。

     

在构建生命周期的集成测试和验证阶段使用Failsafe插件来执行应用程序的集成测试。在集成测试阶段,Failsafe插件不会使构建失败,从而使后集成测试阶段能够执行。