从命令行运行时,未找到黄瓜步骤定义

时间:2016-03-14 23:38:28

标签: java cucumber cucumber-java

关注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或源代码的任何地方。

2 个答案:

答案 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          |