java - @RunWith(CucumberWithSerenity.class) 抛出 NoClassDefFound cucumber /运行时/junit/断言

标签 java junit cucumber serenity-bdd cucumber-serenity

尝试使用 JUnit 5 运行带有 Serenity 的 Cucumber。

当测试运行器具有 @RunWith(Cucumber.class) 注释时,测试会运行,但 Serenity 不会记录结果。

当测试运行器有@RunWith(CucumberWithSerenity.class)时,会抛出“NoClassDefFound cucumber/runtime/junit/Assertions”。

我认为可能是 JUnit 5,所以我切换到 JUnit 4,结果发生了相同的结果。

我将示例项目加载到 GitHub 中:https://github.com/WB3Tech/Cucumber-Serenity-JUnit5

目标是构建项目,然后能够在 Serenity html 输出中看到 Cucumber 结果。

有人知道我可能出错的地方吗?

最佳答案

有两个单独的问题:

依赖| cucumber -java -> v4.2.0

我使用的是 v4.7.1。当我从 4.7.1 回滚到 4.2.0 时,NoClassDefFound 错误消失了。 当我升级到 4.2.1 时,我收到了一个新的 NoClassDefFound 错误。我尝试了从 4.2.1 到 4.7.1 的所有版本,并得到了不同的 NoClassDefFound 错误。

依赖| serenity-cucumber4 - v1.0.17

当我使用 v1.0.17 时,出现了有关缺少依赖项的警告。 当我使用 v1.0.15 时,这个缺少依赖项的警告消失了。

似乎对 serenity-cucumber4 使用的 serenity-screenplay 和 serenity-screenplay-webdriver v2.0.59 的错误引用在 Maven 存储库中不存在。

这是我遇到的另一个障碍,在主要问题中没有讨论

解决方案

  • 我将 cucumber-java 保留在 v4.2.0
  • 我将 serenity-cucumber4 保留在 v1.0.15

现在一切正常

您可以阅读有关我如何解决该问题的更多信息:https://github.com/serenity-bdd/serenity-cucumber4/issues/9

您还可以在此处查看存储库:https://github.com/WB3Tech/Cucumber-Serenity-JUnit5

我升级到Java 12,并中途实现了JUnit5。 TestRunner 没有使用替换 @RunWith 的 @ExtendWith() 属性,它仍然使用 jupiter-vintage 包中的 @RunWith() 属性。

关于java - @RunWith(CucumberWithSerenity.class) 抛出 NoClassDefFound cucumber /运行时/junit/断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57279008/

相关文章:

java - 如何识别字符串中的 2 个独立的 2 位数字?

java - 如何将@Before/@BeforeClass 与@Autowired 字段一起使用

java - 从字符串数组中查找和提取字符串

java - 如何在单个浏览器中运行多个 UI 测试?

java - 如何为测试类中的所有测试启动一次 Jersey 测试容器(Grizzly)?

java - 如何使用 selenium webdriver 在测试自动化中使用 Hiptest 发布者

cucumber "OR"条款?

ruby-on-rails - 以编程方式列出所有 cucumber 场景?

java - 如何随机显示给定单词中的单个字符

java - 如何读取 IBM jit 转储文件