0

一直在关注 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或者源代码所在的地方。

4

2 回答 2

1

首先,保持关键字的第一个字母为大写ex。给定,等等。

其次,场景大纲下定义的步骤仅在“示例”中存在少量记录时才执行。此外,这些步骤将针对“n”条记录执行“n”次。

它可以被认为是 Feature 文件提供的一个隐式循环。

于 2017-05-29T09:03:39.153 回答
0

尝试将 Given、When、Then 和 & But 的首字母大写

Cucumber 允许在每个场景和功能之前添加文本,以便更多地描述每个场景和功能将要发生的事情。Given, When, Then, And & But 使用大写字母是他们遵守的标准,知道那里有一个步骤。

所以对于你的例子:

Feature: practice test

Scenario: not CheckingOut bananas ←[90m# bogus.feature:2←[0m
 Given abc
 When place holder2
 Then place holder3

编辑

除非您要在下面提供示例,否则不要使用场景大纲语法,如下所示:

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          |
于 2016-03-16T09:39:09.677 回答