如果成功重新运行失败的方案,如何更改Jenkins构建状态

时间:2019-01-08 11:25:21

标签: java jenkins testng cucumber-java

我有两个TestNG运行程序来运行黄瓜方案的主要范围和失败范围。如果MainTestRunner成功,则Jenkins的构建状态为“成功”,并且FailedTestRunner将不会在rerun.txt中找到任何失败的方案。但是,如果MainTestRunner方案失败并在FailedTestRunner范围内重新运行并通过,则Jenkins构建仍然会失败。

我需要一个解决方案来使构建状态为“绿色”,因为最后通过了所有测试。

我的测试跑步者没有什么特别的技巧:

MainTestRunner:

$buttonWrapper.on('click', '.addButton', function (){
    var newRow = [];
    $table = $('table').DataTable();
    $theadTr = $('table thead tr');
    for(var i = 0; i < $theadTr.length; i++){
       newRow.push($modal.find('input').eq(i).val());
   }
   $table.row.add(newRow).draw();
});

FailedTestRunner:

@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();
}
}

2 个答案:

答案 0 :(得分:0)

如果我可以看到您的管道步骤,这将对答案有所帮助,但是如果您通过sh步骤执行黄瓜测试,则可以使用returnStatus:true获得执行的退出状态。如果main失败并且sh返回退出状态> 0,那么您可以运行失败而无需更改构建状态。如果重播失败,则如果主通过则让它返回失败状态,则可以跳过失败。

答案 1 :(得分:0)

主要目标是,如果第二次试运行成功,将获得“绿色”詹金斯身分。
我又增加了一个构建步骤。 现在我正在使用:

mvn clean test -Dmaven.test.failure.ignore=true

记录所有失败的测试到rerun.txt文件。
并且:

mvn test -Dtest=runners.FailedTestRunner -DfailIfNoTests=false

运行它。