【问题标题】:How to run a maven goal when there is tests failures?测试失败时如何运行 Maven 目标?
【发布时间】:2012-01-10 12:10:56
【问题描述】:

我想知道在测试失败时是否有办法执行目标?

由于 maven 在遇到测试失败后停止执行(快速失败模式),是否有任何选项可以在测试失败时启动目标?

问候。

【问题讨论】:

  • 感谢您的回答,但也许我没有很好地解释我的需求。当测试失败时,我仍然希望构建失败。但我想执行我在测试失败和失败快速 maven 构建结束之间开发的自定义目标。问候。

标签: maven build maven-surefire-plugin


【解决方案1】:

我也一直在寻找一种方法来做到这一点,但没有多大成功。

但是,以下问题可能会提供一些一般性提示:

Maven reporting plugins do not execute if a unit test failure occurs

这个想法是你会先运行mvn install(或其他),然后运行:

mvn -Dmaven.test.skip=true your-plugin:your-goal

这将使您无需运行测试即可再次运行构建,并保留结果供您阅读。当然,这仅在您的插件正在解析测试结果时才有用...

【讨论】:

  • 更好的方法是在 surefire-plugin 上执行此操作,因此测试结果将在正常构建中被忽略,对于带有测试的完整构建,您可以在 mvn 调用中添加和使用 failsafe:verify,它会如果有测试失败,则失败而不是成功。这是常见/最佳实践方式。
【解决方案2】:

虽然不推荐,但是通过将surefire属性testFailureIgnore设置为true,即使测试失败也可以继续执行maven。

...
<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.11</version>
    ...
    <configuration>
        <testFailureIgnore>true</testFailureIgnore>
        ...
    </configuration>
</plugin>
...

【讨论】:

    【解决方案3】:

    只要mvn clean install -DskipTests

    【讨论】:

      【解决方案4】:

      如果您想预先知道会出现故障,您可以使用:

      mvn <goal> -Dmaven.test.skip = true
      

      【讨论】:

        【解决方案5】:

        我在pom.xml 中添加了这个插件,效果很好。

                    <plugin>
        
                       <groupId>org.apache.maven.plugins</groupId>
                       <artifactId>maven-surefire-plugin</artifactId>
                       <version>2.19.1</version>
                       <configuration>
                       <testFailureIgnore>true</testFailureIgnore>
                    </configuration>
        
                   </plugin>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-23
          • 1970-01-01
          • 2018-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-19
          • 2013-06-11
          相关资源
          最近更新 更多