Cucumber-JVM-@When无法解析为类型

时间:2019-02-06 01:24:01

标签: java eclipse bdd cucumber-jvm

我正在跟踪this tutorial,以在Java项目中使用Cucumber-JVM设置BDD。我在src/test/java文件夹下为正在Eclipse中工作的Java项目设置了以下测试文件:

CucumberTest.java

package myPackage;

import static org.junit.Assert.fail;

import java.io.IOException;

import org.junit.runner.RunWith;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;


@RunWith(Cucumber.class)
@CucumberOptions(features = "classpath:Feature")
public class CucumberTest {

    // error on line below 'When cannot be resolved to a type'
    @When("^the step is invoked$")
    public void myTestMethod() throws IOException {

    }   
}

我确定这很简单(对于Java应用程序,Cucumber相对较新),并且我相信所有这些操作都在正确的地方进行。我该如何解决错误?使用CTRL+SHIFT+O(组织导入)不会自动导入我需要的任何内容,我一直在cucumber.apicucumber.api.junitcucumber.api.junit.Cucumber命名空间,似乎没有什么应该导入的。我已经审查了类似的SO问题,但没有发现任何线索,因为我的问题更具体。

1 个答案:

答案 0 :(得分:0)

感谢@racraman的提示。我正在使用旧版本的Cucumber-JVM Maven依赖项:

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm</artifactId>
        <version>1.2.5</version>
        <type>pom</type>
    </dependency>
     -->
    <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-junit -->
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>

我将它们替换为使用io.cucumber <groupId>

的最新依赖项
    <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>4.2.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>4.2.2</version>
        <scope>test</scope>
    </dependency>

现在我可以导入相关注释:

 import cucumber.api.java.en.When;