特定の機能ファイルごとに、特定のセットアップと破棄の手順を指定したいと考えています。すべてのシナリオの前にコードを実行できるようにするフックと、各機能の前にコードを実行するフックを見てきましたが、1 つの特定の機能に対してすべてのシナリオが実行される前と後にコードを 1 回実行するように指定したいと考えています。
これは可能ですか?
特定の機能ファイルごとに、特定のセットアップと破棄の手順を指定したいと考えています。すべてのシナリオの前にコードを実行できるようにするフックと、各機能の前にコードを実行するフックを見てきましたが、1 つの特定の機能に対してすべてのシナリオが実行される前と後にコードを 1 回実行するように指定したいと考えています。
これは可能ですか?
cucumber-jvm を使用していますか? 条件に合う記事を見つけました。
http://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/
基本的に、JUnit @BeforeClass および @AfterClass は Cucumber フック タグを認識しないため、これには使用しないでください。Init メソッドと Teardown メソッドを特定のシナリオでのみ実行する必要がありますか?
これを試して :
機能ファイル内:
@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly
Feature : My new feature ....
Stepdefinitions.java 内:
@Before("@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly")
public void testStart() throws Throwable {
}
@After("@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly")
public void testStart() throws Throwable {
}
さて、私はあなたと同じ要件を持っていました。cucumber-jvm のドキュメントによると、 Cucumber-JVM はフックを 1 回だけ実行することをサポートしていません。
そこで、キュウリステップフックの @Before の結果である特定の変数に対して null チェックアプローチに従いました。以下のようなもの。
private String token;
public String getToken(){
if (token == null) {
token = CucumberClass.executeMethod();
}
return token;
}
上記の例で、シナリオを実行する前に必要なトークンが getToken() メソッドによって提供され、トークンが 1 回だけ必要であるとします。このアプローチは、シナリオの実行が開始される前に、メソッドが null の場合に初めてメソッドを実行します。実行時間も大幅に短縮されます。