重新运行失败的测试 junit5 黄瓜

时间:2021-03-18 17:30:17

标签: junit5 cucumber-java

我正在尝试使用它来实现 junit5 黄瓜测试的重新运行机制

<dependency>
    <groupId>io.github.artsok</groupId>
    <artifactId>rerunner-jupiter</artifactId>
    <version>2.1.6</version>
    <scope>test</scope>
</dependency>

这是我使用的junit和cucumber版本

junit-jupiter-api 版本是 5.7.0 cucumber-java 版本是 6.9.1cucumber-junit-platform-engine 版本是 6.9.1

但是我在编译时收到这个错误

java.lang.NoClassDefFoundError: org/junit/jupiter/api/extension/ScriptEvaluationException
Caused by: java.lang.ClassNotFoundException: org.junit.jupiter.api.extension.ScriptEvaluationException

当我将 junit-jupiter-api 版本降级到 5.4.2 时,因为 5.7.0 与 maven 依赖树中的 rerunner-jupiter 冲突,我开始收到此错误

org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
org/junit/platform/commons/PreconditionViolationException

如果有任何其他方法可以在 junit5 黄瓜测试中重新运行,我也愿意使用它

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

除了依赖冲突。

不幸的是,您尝试做的事情从根本上是不可能的。 JUnit 5 由三部分组成,JUnit Platform、JUnit Jupiter 和 JUnit Vintage。后两个是 JUnit 平台上的测试引擎实现。 Cucumber JUnit 平台引擎也是如此。

rerunner-jupiter 扩展了 JUnit Jupiter。扩展不是 JUnit 平台的一部分,因此您不能将它们与 Cucumber 一起使用。

答案 1 :(得分:0)

如果您使用 maven-surefire-plugin(来自 maven-failsafe-plugin),配置参数 rerunFailingTestsCount 支持,从插件的 3.0.0-M4 版本开始,重新运行基于 JUnit 5 的测试。

这包括 Cucumber JUnit 平台引擎。

更多信息:https://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html#rerunFailingTestsCount