一直在关注 Java 的黄瓜书,我正在处理的这个例子与第 2 章中的非常相似。这是在 cmd 行上,因为我现在不想合并到 IDE 中。
Feature: practice test
Scenario Outline: not CheckingOut bananas
given abc
when place holder2
then place holder3
测试步骤:
public class SimpleTest {
@Given("^abc")
public void part1() throws Exception {
System.out.println("part 1");
throw new Exception("an exceptoin");
}
@When("place holder2")
public void part2(){
System.out.println("part 2");
}
@Then("place holder3")
public void part3() {
System.out.println("part 3");
}
}
我在@Given 上试过“abc”、“^abc”、“give abc”...
我正在使用以下 bat 文件来驱动它,并且步骤定义会编译并且类文件就在那里。我在 -g (胶水)选项上意识到包名称是参数值,所以我尽可能简单,但我发现了 0 个场景。bat文件很简单:
echo cucumber compile and execution
javac -cp "lib/*" step_definitions/SimpleTest.java
javac -cp "lib/*;web/WEB-INF/lib/*" test/java/xxxxx/zzzz/referral/out/batch/RunCukesTest.java
java -cp "lib/*;web/WEB-INF/lib/*;.;test/java/*" cucumber.api.cli.Main -p pretty -g step_definitions features
我始终得到以下结果:
Feature: practice test
Scenario Outline: not CheckingOut bananas ←[90m# bogus.feature:2←[0m
given abc
when place holder2
then place holder3
0 Scenarios
0 Steps
0m0.000s
显然 CLI 正在查找功能文件,但未找到已编译的步骤定义。怀疑这是一个类路径问题。我提供了额外的目录并移动了步骤定义文件。CLI 没有获取功能文件并将其与编译的定义匹配。提前谢谢。很多时候打出这些问题,解决方案就实现了,但事实并非如此。
如果 *.feature 文件是 cucumber 运行的要求,并且即使 junit 挂钩到 cucumber.class 测试运行器,它们也必须对应于编译的步骤定义,那么本书可能会留下更少的空间不确定性。这本书的论坛看起来很薄。可能需要去github或者源代码所在的地方。