3

我正在尝试从 Windows 命令行(Windows 10)运行 Cucumber cli。到目前为止一切顺利。我可以让它从正确的位置加载我的 *.feature 文件并告诉我需要实现哪些方法。我在类方法上创建了一个带有@Give、@When、@Then 符号的类,然后干净地编译了我的类。

.class 文件位于我的 Eclipse 项目的 \bin 目录的 com\company\automation\ 子目录中,所有支持的 jar 都位于 C:\java 中。我在 .bat 文件中使用以下语法尝试运行,但 Cucumber 报告它找不到我的方法并提示我编写这些“缺少的步骤”。

我正在使用的命令是:

java -classpath "C:\java\*";"C:\Users\Mark\workspace\Company Automation\bin\*" cucumber.api.cli.Main --glue "C:\Users\Mark\workspace\Company Automation\bin\com\company\automation" "C:\Users\Mark\workspace\Company Automation\Features"

我对“缺失步骤”的实现如下:

package com.company.automation;

import cucumber.api.PendingException;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class CucumberImplementation {

    @Given("^I am a visitor$")
    public void i_am_a_visitor() throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }

    @When("^I visit \"([^\"]*)\"$")
    public void i_visit(String arg1) throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }

    @Then("^there must be a \"([^\"]*)\" element$")
    public void there_must_be_a_element(String arg1) throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }

    @Then("^the \"([^\"]*)\" element must contain a \"([^\"]*)\" element$")
    public void the_element_must_contain_a_element(String arg1, String arg2) throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }

    @Then("^the \"([^\"]*)\" element must contain a \"([^\"]*)\" link$")
    public void the_element_must_contain_a_link(String arg1, String arg2) throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }

    @Then("^there must be a \"([^\"]*)\" element after the \"([^\"]*)\" element$")
    public void there_must_be_a_element_after_the_element(String arg1, String arg2) throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }

}

我已经为 --glue 选项尝试了各种不同的路径形式,包括 classpath:com.company.automation、classpath:com.company.automation.CucumberImplementation.class 和类似但带有反斜杠和正斜杠的路径形式。看来,无论我对 --glue 选项的参数使用什么语法,Cucumber 似乎都完全忽略了它,甚至在第一步都没有抛出 PendingException。它也不会抱怨 --glue 选项的参数是一个无效的路径,如果我只是把胡言乱语放在那里。

使用 cucumber-core-1.2.4.jar 作为基础。

4

1 回答 1

3

有同样的问题。

这就是我解决它的方法(感谢上面的评论):

--glue com.test.app

其中“com.test.app”是我的步骤定义文件的一个包。

于 2015-09-29T14:41:40.000 回答