我正在尝试使用它来实现Junit5cucumber测试的重跑机制
<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.0cucumber-java
版本为6.9.1,cucumber-junit-platter-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依赖树中的reruner-jupiter
冲突时,我开始得到这个错误
org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
org/junit/platform/commons/PreconditionViolationException
如果有任何其他方法可以在junit5cucumber测试中实现重新运行,我也愿意使用它
任何帮助都很感激
依赖冲突放在一边。
不幸的是,您尝试做的事情从根本上是不可能的。JUnit 5由三部分组成,JUnit平台、JUnit Jupiter和JUnit Vintage。后两部分是JUnit平台上的测试引擎实现。cucumberJUnit平台引擎也是如此。
reruner-jupiter
扩展了JUnit Jupiter。扩展不是JUnit平台的一部分,因此您不能将它们与Cucumber一起使用。
如果您使用maven-surefire-plugin(maven-ailsaf-plugin),则配置参数rerunFailingTestsCount
支持从插件的3.0.0-M4版本开始重新运行基于JUnit 5的测试。
这包括Cucumber JUnit平台引擎。
更多信息:https://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html#rerunFailingTestsCount