Java 用のキュウリの本に従っていますが、私が取り組んでいるこの例は、第 2 章の内容と非常によく似ています。この時点で IDE に組み込みたくないので、これは cmd 行にあります。
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」を試してみました
私はこれを次のバットファイルで駆動しています。ステップ定義はコンパイルされ、クラスファイルはそこにあります。-g (接着剤) オプションでパッケージ名が引数値であることを認識したので、これをできるだけ単純にしましたが、シナリオが 0 件見つかりました。バット ファイルは単純です。
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 またはソース コードがある場所に移動する必要があります。