我正在尝试使用它来实现 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.1
和
cucumber-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 黄瓜测试中重新运行,我也愿意使用它
感谢任何帮助
答案 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 平台引擎。