web-dev-qa-db-ja.com

特定の機能の前後にキュウリのステップを実行する

特定のセットアップを指定し、特定の機能ファイルごとに手順を分解します。すべてのシナリオの前にコードを実行できるフック、および各機能の前にコードを実行するフックを見てきましたが、特定の機能に対してすべてのシナリオを実行する前後に1回実行するコードを指定したいと思います。

これは可能ですか?

26
Dave Novelli

Cucumber-jvmを使用していますか?あなたの要件に合った記事を見つけました。

http://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/

基本的に、JUnit @BeforeClassと@AfterClassを使用しないでください。これらはCucumber Hook Tagsを認識しないためです。 InitメソッドとTeardownメソッドを特定のシナリオでのみ実行したいですか?

14
Oh Chin Boon

これは、テストを実行するために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(){
       ...
    }
}
16
Wouter

これを試してください:

機能ファイル内:

@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly
Feature : My new feature ....

Stepdefinitions.Javaで

@Before("@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly")
public void testStart() throws Throwable {
}

@After("@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly")
public void testStart() throws Throwable {
}
1
Abhishek Bedi