我正在尝试从 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 作为基础。