web-dev-qa-db-ja.com

Cucumberを使用して失敗したシナリオを再実行する方法は?

私はテストにキュウリを使用しています。失敗したテストのみを再実行するにはどうすればよいですか?

45
Kalyan

再実行フォーマッタでCucumberを実行します。

cucumber -f rerun --out rerun.txt

失敗したすべてのシナリオの場所をこのファイルに出力します。

その後、次を使用して再実行できます

cucumber @rerun.txt
57
Andrei Botalov

これが私のシンプルで素敵なソリューションです。

ステップ1:キュウリを書きますJavaファイルを以下のようにrerun:target/rerun.txtで記述します。キュウリは失敗したシナリオの行番号をrerun.txtに書きます。

features/MyScenaios.feature:25
features/MyScenaios.feature:45

後で、このファイルをStep 2で使用できます。このファイルにMyScenarioTests.Javaという名前を付けます。これは、タグ付けされたシナリオを実行するためのメインファイルです。シナリオがテストケースに失敗した場合、MyScenarioTests.Javaはターゲットディレクトリーの下にrerun.txtを書き込み/マークします。

@RunWith(Cucumber.class)
@CucumberOptions(
    monochrome = true,
    features = "classpath:features",
    plugin = {"pretty", "html:target/cucumber-reports",
              "json:target/cucumber.json",
              "rerun:target/rerun.txt"} //Creates a text file with failed scenarios
              ,tags = "@mytag"
           )
public class MyScenarioTests   {

}

ステップ2:以下に示すように、別のシナリオファイルを作成します。これをFailedScenarios.Javaとしましょう。失敗したシナリオに気づいたときはいつでも、このファイルを実行します。このファイルは、シナリオを実行するための入力としてtarget/rerun.txtを使用します。

@RunWith(Cucumber.class)
@CucumberOptions(
    monochrome = true,
    features = "@target/rerun.txt", //Cucumber picks the failed scenarios from this file 
    format = {"pretty", "html:target/site/cucumber-pretty",
            "json:target/cucumber.json"}
  )
public class FailedScenarios {

}

失敗したシナリオに気づいた場合は、毎回Step 2でファイルを実行します

5
vkrams

@ target/rerun.txtの新機能を使用するには、少なくともバージョン1.2.0が必要です。その後、最後に実行され、このファイルを使用するランナーを作成します。また、Jenkinsを使用している場合は、ランダム失敗機能にタグを付けて、2回実行しない限りビルドが失敗しないようにすることができます。