Surefire 重新运行失败的测试不起作用
Surefire rerun failing tests not working
我想重新运行一个我知道会失败的测试,因为我正在尝试测试 Surefire 参数以重新 运行 失败的测试。
我用这两个命令尝试了 运行 Maven,它们都没有按预期工作
-Dsurefire.rerunFailingTestsCount=2 -Dtest=TestThatFails test
和
-Dsurefire.rerunFailingTestsCount=2 -Dtest=TestThatFails surefire:test
这是pom.xml
的一部分
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-api</artifactId>
<version>2.19.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
我原以为 Surefire 会在失败后重新启动测试,但 Maven 只是抛出这个错误,我知道如何解决这个错误,但我希望重新运行测试。
Results :
Tests in error:
testA(selenium.services.TestThatWillFail): Element is not currently visible and so may not be interacted with(..)
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 55.060 s
[INFO] Finished at: 2016-11-24T12:58:02+01:00
[INFO] Final Memory: 18M/173M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project eskn_selenium: There are test failures.
尽管文档中缺少参数 rerunFailingTestsCount
was introduced in version 2.18 of the Maven Surefire Plugin, as mentioned in SUREFIRE-1087。由于您使用的是默认版本 2.12.4(来自 Super POM),因此该选项不可用。
因此,修复只是将Surefire版本更新到至少2.18的版本;比如最新的,目前是2.19.1:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
</plugin>
</plugins>
</pluginManagement>
请注意,此参数仅适用于 JUnit 4+(这是你的情况,因为你有 JUnit 4.12)。
不用命令行属性-Dsurefire.rerunFailingTestsCount=2,也可以在properties部分的pom中定义
<properties>
<surefire.rerunFailingTestsCount>2</surefire.rerunFailingTestsCount>
</properties>
只是添加到 Wim Rutgeerts 的回答中 - rerunFailingTestsCount
必须在 configuration
部分,而不是在 properties
中,像这样:
<configuration>
<rerunFailingTestsCount>2</rerunFailingTestsCount>
</configuration>
在我使用 maven-surefire-plugin
2.19.1 的情况下,它是这样工作的。当它在 properties
时它不起作用。
JUnit 5更新:Maven Surefire 版本 3.0.0-M4
或更高版本现在允许您在执行 JUnit 5 测试时使用 rerunFailingTestsCount
系统 属性 .
确保在 运行 您的 mvn clean
阶段通过以下 属性:
-Dsurefire.rerunFailingTestsCount=3
我想重新运行一个我知道会失败的测试,因为我正在尝试测试 Surefire 参数以重新 运行 失败的测试。 我用这两个命令尝试了 运行 Maven,它们都没有按预期工作
-Dsurefire.rerunFailingTestsCount=2 -Dtest=TestThatFails test
和
-Dsurefire.rerunFailingTestsCount=2 -Dtest=TestThatFails surefire:test
这是pom.xml
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-api</artifactId>
<version>2.19.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
我原以为 Surefire 会在失败后重新启动测试,但 Maven 只是抛出这个错误,我知道如何解决这个错误,但我希望重新运行测试。
Results :
Tests in error:
testA(selenium.services.TestThatWillFail): Element is not currently visible and so may not be interacted with(..)
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 55.060 s
[INFO] Finished at: 2016-11-24T12:58:02+01:00
[INFO] Final Memory: 18M/173M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project eskn_selenium: There are test failures.
尽管文档中缺少参数 rerunFailingTestsCount
was introduced in version 2.18 of the Maven Surefire Plugin, as mentioned in SUREFIRE-1087。由于您使用的是默认版本 2.12.4(来自 Super POM),因此该选项不可用。
因此,修复只是将Surefire版本更新到至少2.18的版本;比如最新的,目前是2.19.1:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
</plugin>
</plugins>
</pluginManagement>
请注意,此参数仅适用于 JUnit 4+(这是你的情况,因为你有 JUnit 4.12)。
不用命令行属性-Dsurefire.rerunFailingTestsCount=2,也可以在properties部分的pom中定义
<properties>
<surefire.rerunFailingTestsCount>2</surefire.rerunFailingTestsCount>
</properties>
只是添加到 Wim Rutgeerts 的回答中 - rerunFailingTestsCount
必须在 configuration
部分,而不是在 properties
中,像这样:
<configuration>
<rerunFailingTestsCount>2</rerunFailingTestsCount>
</configuration>
在我使用 maven-surefire-plugin
2.19.1 的情况下,它是这样工作的。当它在 properties
时它不起作用。
JUnit 5更新:Maven Surefire 版本 3.0.0-M4
或更高版本现在允许您在执行 JUnit 5 测试时使用 rerunFailingTestsCount
系统 属性 .
确保在 运行 您的 mvn clean
阶段通过以下 属性:
-Dsurefire.rerunFailingTestsCount=3