无法在Cucumber中运行功能

时间:2014-09-15 11:45:39

标签: java exception cucumber cucumber-jvm

我在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文件如下:

image

我得到的例外是:

  

线程中的异常“main”cucumber.runtime.CucumberException:失败   实例化公众   cucumber.runtime.java.JavaBackend(cucumber.runtime.io.ResourceLoader)   与[cucumber.runtime.io.MultiLoader@75d837b6]

我试图在网上寻找这个问题的解决方案,但没有运气。

我还与教程的OP讨论过,我还在等待反馈,但已经有一段时间了。

7 个答案:

答案 0 :(得分:5)

1,我几天前碰到了这个,它的简单只是从依赖中移除了黄瓜 - 春天。 2如果这不起作用,请尝试更新cucumber-core,cucumber-junit和cucumber-java所有版本1.2.3

答案 1 :(得分:4)

我遇到了类似的问题并得到了与你相同的错误。

首先提到功能文件的路径 features = {"src/cucumber/myfile.feature"} 无论如何,这并没有导致错误。

要运行您的Cucumber运行器类,您需要的所有依赖项都是

cucmber-junit cucumber-javajunit

我有一个额外的cucumber-guice正在创建问题,一旦我删除它,错误就消失了,跑步者也成功执行了。

从链接到您提到的图片,看起来您没有使用cucumber-guice,但我仍然建议您删除其他不必要的黄瓜依赖项,然后重试。

答案 2 :(得分:2)

我认为问题在于许多黄瓜插件,例如黄瓜 - 测试,黄瓜 - 春天和(在我的情况下)黄瓜 - guice,期望它们链接的相应模块也被包括在内。但显然黄瓜专家决定不将这种依赖关系包含在他们的pom.xml文件中,所以问题直到运行时才会显现出来。

所以(回答Eugene S在LING&#39的回答下的问题)如果你想实际使用黄瓜的guice,你还需要添加guice本身作为依赖。

答案 3 :(得分:1)

这对我有用,我希望它对你也有用。

在pom.xml中更新您的Cucumber依赖项  即

  • cucumber-java(1.2.2)
  • cucumber-jvm(1.2.2)
  • cucumber-junit(1.2.2)

并更新您的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>