提问者:小点点

重新运行失败的测试junit5cucumber


我正在尝试使用它来实现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测试中实现重新运行,我也愿意使用它

任何帮助都很感激


共2个答案

匿名用户

依赖冲突放在一边。

不幸的是,您尝试做的事情从根本上是不可能的。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