java - Cucumber 框架在运行测试时抛出错误
问题描述
我正在使用 Cucumber 框架来编写我的 ATDD。尝试运行 Cucumber 测试时出现以下错误。
[INFO] Running my.package.RunCukesTests
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.146 s <<< FAILURE! - in my.package.RunCukesTests
[ERROR] initializationError(my.package.RunCukesTests) Time elapsed: 0.005 s <<< ERROR!
java.lang.NoClassDefFoundError: io/cucumber/stepexpression/TypeRegistry
Caused by: java.lang.ClassNotFoundException: io.cucumber.stepexpression.TypeRegistry
[INFO]
[INFO] Results:
[INFO]
[ERROR] Errors:
[ERROR] RunCukesTests.initializationError » NoClassDefFound io/cucumber/stepexpression...
[INFO]
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
以下是 Cucumber 依赖项:
<properties>
<cucumber.version>3.0.2</cucumber.version>
</properties>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java8</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>
RunCuckesTest.java
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(plugin = { "html:target/test_results/html/TestRunner/cucumber-html-report",
"json:target/test_results/json/TestRunner-reports.json", "pretty" }, tags = { "" }, features = {
"src/test/resources/" }, glue = {
"glue/package/steps",
"glue/package1/steps" })
public class RunCukesTests {
}
在具有类似异常的线程中搜索时,我发现这可能是由于多个依赖项或使用不同版本不匹配而导致的。但是在这里我使用的是相同的版本,当我使用相同的版本时,我不确定问题出在哪里。
非常感谢任何帮助。提前致谢。
解决方案
关键点:我们不会混合 info.cukes 和 io.cucumber 依赖项,特别是它们的版本!这样做会导致不可预测的结果。
解决方案:您可能更喜欢以下正确的 io.cucumber 依赖项集,并根据您的框架需要更新 cucumber v。
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>4.2.6</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>4.2.6</version>
</dependency>
推荐阅读
- dynamics-crm - MS Dynamics CRM 中的时间线是什么?
- javascript - console.time 显示运行相同功能的不同时间
- unity3d - unity3D 时间轴和电影机
- azure - Elk Logstash 无法连接到事件中心 Azure
- c# - 按钮“后退”始终禁用
- php - 问题解决 在 PHP 7.2 上移动上传的文件错误 8 - UPLOAD_ERR_EXTENSION
- javascript - 可观察管道中的异常被抑制
- asp.net-core - 扩展 ResourceManagerStringLocalizer 功能
- php - 元查询 - 在一个查询中比较两个元值
- angular - 如果一次失败,为什么角度 ngx 效果不起作用?