关注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”,“给abc”...
我使用以下bat文件驱动它,并且步骤定义执行编译并且类文件存在。我在-g(glue)选项中意识到包名是参数值,所以我尽可能简单 但是我找到了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文件是黄瓜运行的必要条件,并且它们必须对应于编译的步骤定义,即使junit挂钩进入cucumber.class测试运行器,本书也可能留下较少的房间不确定性。 这本书的论坛看起来很瘦。可能需要去github或源代码的任何地方。
答案 0 :(得分:1)
首先,将关键字的第一个字母保留为首都。鉴于,等等。
其次,Scenario Outline下定义的步骤仅在'示例'中存在少量记录时执行。此外,这些步骤将被执行' n' ' n'的次数记录。
可以将其视为Feature文件提供的隐式循环。
答案 1 :(得分:0)
尝试将Given,When,Then,And&的首字母大写。但
Cucumber允许在每个场景和特征之前使用文本,以便更详细地描述每个场景和特征中将要发生的事情。使用大写字母表示Given,When,Then,And&但是,这是他们坚持的标准,知道那里有一步。
所以对你的例子来说:
Feature: practice test
Scenario: not CheckingOut bananas ←[90m# bogus.feature:2←[0m
Given abc
When place holder2
Then place holder3
修改强>
除非您打算在下面提供示例,否则不要使用Scenario Outline语法:
Feature: practice test
Scenario Outline: not CheckingOut bananas ←[90m# bogus.feature:2←[0m
Given abc
When place holder<placeholder>
Then place holder<placeholder2>
Examples:
|placeholder|placeholder2|
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |