我在Cucumber中运行功能时遇到问题,这个功能非常基础,因为它来自教程。
未定义,如下:
Feature: Proof that my concept works
Scenario: My first test
Given this is my first step
When this is my second step
Then this is my final step
我的Cucumber跑步者课程如下:
package cucumber;
import org.junit.runner.RunWith;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(
format = {"pretty", "json:target/"},
features = {"src/cucumber/"}
)
public class CucumberRunner {
}
我在项目中拥有的外部.jar
文件如下:
我得到的例外是:
线程中的异常“main”cucumber.runtime.CucumberException:失败 实例化公众 cucumber.runtime.java.JavaBackend(cucumber.runtime.io.ResourceLoader) 与[cucumber.runtime.io.MultiLoader@75d837b6]
我试图在网上寻找这个问题的解决方案,但没有运气。
我还与教程的OP讨论过,我还在等待反馈,但已经有一段时间了。
答案 0 :(得分:5)
1,我几天前碰到了这个,它的简单只是从依赖中移除了黄瓜 - 春天。 2如果这不起作用,请尝试更新cucumber-core,cucumber-junit和cucumber-java所有版本1.2.3
答案 1 :(得分:4)
我遇到了类似的问题并得到了与你相同的错误。
首先提到功能文件的路径
features = {"src/cucumber/myfile.feature"}
无论如何,这并没有导致错误。
要运行您的Cucumber运行器类,您需要的所有依赖项都是
cucmber-junit
cucumber-java
和
junit
。
我有一个额外的cucumber-guice
正在创建问题,一旦我删除它,错误就消失了,跑步者也成功执行了。
从链接到您提到的图片,看起来您没有使用cucumber-guice
,但我仍然建议您删除其他不必要的黄瓜依赖项,然后重试。
答案 2 :(得分:2)
我认为问题在于许多黄瓜插件,例如黄瓜 - 测试,黄瓜 - 春天和(在我的情况下)黄瓜 - guice,期望它们链接的相应模块也被包括在内。但显然黄瓜专家决定不将这种依赖关系包含在他们的pom.xml文件中,所以问题直到运行时才会显现出来。
所以(回答Eugene S在LING&#39的回答下的问题)如果你想实际使用黄瓜的guice,你还需要添加guice本身作为依赖。
答案 3 :(得分:1)
这对我有用,我希望它对你也有用。
在pom.xml中更新您的Cucumber依赖项 即
并更新您的Junit依赖关系。 (4.11)。
答案 4 :(得分:0)
此错误的唯一原因是所有黄瓜库的版本都不相同。应该是这样的:
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java8</artifactId>
<version>4.2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-picocontainer -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>4.2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-testng -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>4.2.6</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
答案 5 :(得分:0)
第一件事:,因为您使用的是非常老的依赖项,我们会要求您使用 Cucumber v> = 4.0.0 ( v1.2.5 >)的黄瓜。
关键点::我们将不混合直接和传递依赖,特别是它们的版本!这样做可能导致不可预测的结果。
解决方案:请删除。 cucumber-core , cucumber-java , cucumber-jvm-deps ,小黄瓜和 cucumber-html 。它们是传递依赖,将由您的直接依赖提供。
您可以添加以下一组黄瓜最小依赖项。
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>4.2.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>4.2.6</version>
<scope>test</scope>
</dependency>
答案 6 :(得分:0)
在这个问题上花了很多时间之后,我收到的大多数错误是由于依赖关系和依赖关系版本不匹配所致。将这些依赖项添加到pom.xml文件对我有用:
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-scala_2.11</artifactId>
<version>4.7.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-jvm -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-jvm</artifactId>
<version>4.8.1</version>
<type>pom</type>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java8 -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java8</artifactId>
<version>4.8.1</version>
</dependency>