gpt4 book ai didi

Maven + Surefire 在失败的测试中返回代码为 0

转载 作者:行者123 更新时间:2023-12-01 02:28:10 25 4
gpt4 key购买 nike

我有一个项目,测试分为单元和集成阶段。我让它运行 buildbot,问题是即使在测试中失败,maven 返回代码也是 0,所以 buildbot 构建成功。

这是 mvn 集成测试的结果:

Results :

Tests in error:
Info about failed tests

Tests run: 5, Failures: 0, Errors: 5, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 19 seconds
[INFO] Finished at: Tue Feb 12 09:43:53 UTC 2013
[INFO] Final Memory: 36M/97M
[INFO] ------------------------------------------------------------------------

$ echo $?
0

如果没有构建成功部分,mvn install 的结果是相同的
结果 :
Tests in error: 
Info about failed tests

Tests run: 5, Failures: 0, Errors: 5, Skipped: 0

$ echo $?
0

Surefire 配置是这样的:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.13</version>
<configuration>
<printSummary>true</printSummary>
<excludedGroups>com.testlib.IntegrationTest</excludedGroups>
</configuration>
<executions>
<execution>
<id>unit-tests</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<excludedGroups>com.testlib.IntegrationTest</excludedGroups>
</configuration>
</execution>
<execution>
<id>integration-tests</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<includes>
<groups>com.testlib.IntegrationTest</groups>
</includes>
</configuration>
</execution>
</executions>
</plugin>

我已经阅读了有关 Maven 返回代码的其他线程,但理论上相关的错误应该在我的 Maven 版本中修复(Apache Maven 2.2.1(rdebian-8))

有没有办法改变这种行为?

更新:
正如建议的那样,我尝试了surefire:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.13</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.13</version>
</dependency>
</dependencies>
<configuration>
<groups>com.testlib.IntegrationTest</groups>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
</configuration>
</execution>
</executions>

我需要 surefire-junit 来避免初始化错误。

最佳答案

首先检查是否有相同的父 pom 配置:

<testFailureIgnore>true</testFailureIgnore>

某处...您可以通过以下方式检查:
mvn help:effective-pom

此外,您正在尝试使用 maven-surefire-plugin 运行集成测试这是完全错误的。对于集成测试,请使用 maven-failsafe-plugin .另一件事是以正确的方式命名您的集成测试,例如 IT*.java、*IT.java 等。

另一件事是你为什么要使用这么旧的 Maven 版本检查 Maven 3.0.4。

啊对不起。监督您正在谈论集成测试。如果您正确使用 maven-failsafe-plugin 进行集成测试,它包含一个特定目标 verify
其目的是在之后检查集成测试的结果。但是您需要通过执行 block 单独配置它并绑定(bind)到特定的生命周期阶段。

关于Maven + Surefire 在失败的测试中返回代码为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14829845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com