2

私は少し特殊な状況です。基本的に、@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 テスト ランナーがコードを実行したくないという漠然とした考えがあります。

誰でも助けることができますか?

4

1 に答える 1

2

お探しの解決策を提供することはできませんが....

...手動で実行したいテストにタグ付けすることを検討しましたか (例: を使用@Manual)?

次に、注釈のコメントを解除し、Cucumber-JVM 呼び出しに@RunWith追加することで手動テストを除外できます。--tags ~@Manual

手動の JUnit 呼び出しで、追加できます--tags @Manual

于 2012-07-26T09:01:15.637 に答える