私は少し特殊な状況です。基本的に、@Test で注釈が付けられた単体テストがあり、そのテスト内で Cucumber JVM テスト クラスを実行する必要があります。
なんで?長い話。クラスローダと RoboGuice に関係するもので、それほど重要ではありませんが、できることとできないことに制限を課しています。
テスト方法は次のとおりです。
@Test
public void runCucumberFeature() throws Exception {
Cucumber cucumber = new Cucumber(MyCucumberTest.class);
cucumber.run(new RunNotifier());
}
MyCucumberTest は私が作成したクラスで、次のように注釈が付けられています。
//@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, strict=true)
public class MyCucumberTest {
// Empty, as required by Cucumber JVM
}
@RunWith アノテーションをコメントアウトしたのはなぜですか? そうしないと、Cucumber テスト ランナーがテストを取得して実行しますが、手動でテストを実行しているため、これは望ましくありません。
問題は、上記が機能しないことです。Cucumber が機能ファイルを見つけているようで、MyCucumberTest に @Givens などが含まれていることを確認しており、テストを実行しているかのようにテストを出力しています。
しかし、そうではありません。@Given、@When、および @Then メソッド内で実行されるコードはありません。理由はわかりませんが、クラスに @RunWith アノテーションが付けられていないため、Cucumber JVM テスト ランナーがコードを実行したくないという漠然とした考えがあります。
誰でも助けることができますか?