J'utilise le concombre pour mes tests. Comment puis-je réexécuter uniquement les tests ayant échoué?
Exécuter Cucumber avec le formateur de réexécution:
cucumber -f rerun --out rerun.txt
Il va générer les emplacements de tous les scénarios ayant échoué dans ce fichier.
Ensuite, vous pouvez les réexécuter en utilisant
cucumber @rerun.txt
Voici ma solution simple et soignée.
Étape 1 : Écrivez votre fichier Java de concombre comme indiqué ci-dessous avec rerun:target/rerun.txt
. Cucumber écrit les numéros de ligne des scénarios ayant échoué dans rerun.txt
, comme indiqué ci-dessous.
features/MyScenaios.feature:25
features/MyScenaios.feature:45
Plus tard, nous pourrons utiliser ce fichier dans Étape 2 . Nommez ce fichier en tant que MyScenarioTests.Java
. Ceci est votre fichier principal pour exécuter vos scénarios marqués. Si vos scénarios ont échoué aux tests, MyScenarioTests.Java
les écrira/les marquera rerun.txt
dans le répertoire cible.
@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 {
}
Étape 2: Créez un autre fichier de scénario comme indiqué ci-dessous. Disons ceci en tant que FailedScenarios.Java
. Chaque fois que vous remarquez un scénario ayant échoué, exécutez ce fichier. Ce fichier utilisera target/rerun.txt
comme entrée pour l'exécution des scénarios.
@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 {
}
Chaque fois que vous remarquez un scénario ayant échoué, exécutez le fichier dans Étape 2
Vous devez disposer de la version 1.2.0 au minimum pour utiliser la nouvelle fonctionnalité @ target/rerun.txt. Après cela, il suffit de créer un coureur qui s'exécute à la fin et utilise ce fichier. De plus, si vous utilisez Jenkins, vous pouvez insérer une balise sur les fonctionnalités d’échec aléatoire afin que la construction n’échoue pas à moins d’être exécutée deux fois.