Tengo dos corredores TestNG para ejecutar principales y fallidos alcances de escenarios de pepino. En caso MainTestRunner fue exitosa, Jenkins Status es "éxito" y FailedTestRunner no encontrará ningún escenario fallidos en rerun.txt. Pero en el caso MainTestRunner ha fallado escenario y se reruned en el volumen de FailedTestRunner y pasado, Jenkins acumulación falla de todos modos.
Necesito una solución para hacer Status "verde" como todas las pruebas se pasan al final.
No hay trucos especiales en mis corredores de la prueba:
MainTestRunner:
@CucumberOptions(
features = ".",
glue = {"steps"},
monochrome = true,
format = {
"pretty",
"html:target/cucumber-pretty",
"json:target/CucumberTestReport.json",
"rerun:target/rerun.txt"
})
public class MainTestRunner extends AbstractTestNGCucumberTests {
private TestNGCucumberRunner testNGCucumberRunner;
@BeforeClass(alwaysRun = true)
public void setUpClass() {
testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
}
@Test(description = "Runs Cucumber Feature", dataProvider = "features")
public void feature(CucumberFeatureWrapper cucumberFeature) {
testNGCucumberRunner.runCucumber(cucumberFeature.getCucumberFeature());
}
@DataProvider
public Object[][] features() {
return testNGCucumberRunner.provideFeatures();
}
@AfterClass(alwaysRun = true)
public void tearDownClass() {
testNGCucumberRunner.finish();
}
}
FailedTestRunner:
@CucumberOptions(
features = "@target/rerun.txt"
, glue = {"steps"}
, monochrome = true
, format = {
"pretty",
"html:target/cucumber-pretty",
"json:target/CucumberTestReport.json",
"rerun:target/rerun.txt"
})
public class FailedTestRunner extends AbstractTestNGCucumberTests {}
El objetivo principal era obtener el estado 'verde' Jenkins si la segunda prueba fue un éxito.
He añadido un paso más acumulación. Ahora estoy usando:
mvn clean test -Dmaven.test.failure.ignore=true
para registrar todas las pruebas no presentó rerun.txt.
Y:
mvn test -Dtest=runners.FailedTestRunner -DfailIfNoTests=false
para ejecutarlo.