特定のセットアップを指定し、特定の機能ファイルごとに手順を分解します。すべてのシナリオの前にコードを実行できるフック、および各機能の前にコードを実行するフックを見てきましたが、特定の機能に対してすべてのシナリオを実行する前後に1回実行するコードを指定したいと思います。
これは可能ですか?
Cucumber-jvmを使用していますか?あなたの要件に合った記事を見つけました。
http://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/
基本的に、JUnit @BeforeClassと@AfterClassを使用しないでください。これらはCucumber Hook Tagsを認識しないためです。 InitメソッドとTeardownメソッドを特定のシナリオでのみ実行したいですか?
これは、テストを実行するためにjunitを使用している場合です。アノテーションを使用して、単体テストクラスと個別のステップクラスを作成します。標準の@Beforeのものはstepsクラスに入りますが、@ BeforeClassアノテーションはメインユニットテストクラスで使用できます。
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"json", "<the report file"},
features = {"<the feature file>"},
strict = false,
glue = {"<package with steps classes"})
public class SomeTestIT {
@BeforeClass
public static void setUp(){
...
}
@AfterClass
public static void tearDown(){
...
}
}
これを試してください:
機能ファイル内:
@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly
Feature : My new feature ....
Stepdefinitions.Javaで:
@Before("@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly")
public void testStart() throws Throwable {
}
@After("@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly")
public void testStart() throws Throwable {
}