テストにCucumberを使用しています。失敗したテストのみを再実行するにはどうすればよいですか?
5 に答える
再実行フォーマッターで Cucumber を実行します。
cucumber -f rerun --out rerun.txt
失敗したすべてのシナリオの場所がこのファイルに出力されます。
次に、使用してそれらを再実行できます
cucumber @rerun.txt
これが私のシンプルできちんとした解決策です。
ステップ 1 : キュウリの Java ファイルを下記のようにrerun:target/rerun.txt
. Cucumber は、rerun.txt
以下に示すように、失敗したシナリオの行番号を書き込みます。
features/MyScenaios.feature:25
features/MyScenaios.feature:45
後で、このファイルをステップ 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 {
}
失敗したシナリオに気付いた場合は常に、ステップ 2でファイルを実行します。
私はこれが古いことを知っていますが、最初にここで自分の道を見つけ、その後、より最新の回答を見つけました(受け入れられたCyril Duchon-Dorisの回答ではありません): https://stackoverflow.com/a/41174252/215789
cucumber 3.0 以降--retry
、失敗したシナリオを再試行する回数を指定するために使用できます。
https://cucumber.io/blog/open-source/announce-cucumber-ruby-3-0-0/
cucumber コマンドに追加するだけです。
cucumber ... --retry 2