java - 如果成功重新运行失败的场景,如何更改 Jenkins 构建状态
问题描述
我有两个 TestNG 跑步者来运行黄瓜场景的主要和失败范围。如果 MainTestRunner 成功,Jenkins 构建状态为“成功”,FailedTestRunner 不会在 rerun.txt 中找到任何失败的场景。但是如果 MainTestRunner 失败了并且在 FailedTestRunner 范围内重新运行并通过了,Jenkins 构建无论如何都会失败。
我需要一个解决方案来使构建状态为“绿色”,因为所有测试最终都通过了。
我的测试运行器中没有特殊的技巧:
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();
}
}
失败的TestRunner:
@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 {}
解决方案
如果我能看到您的管道步骤,它将有助于回答,但是如果您通过 sh 步骤执行黄瓜测试,那么您可以使用 returnStatus:true 获得执行的退出状态。如果 main 失败并且 sh 返回 exit status > 0 ,那么您可以在不更改构建状态的情况下运行失败。如果重放失败,则让它返回失败状态,如果主要通过,则可以跳过失败。
推荐阅读
- ms-access - 如何辨别 Access 事件中是否正在插入或更新记录?
- vb.net - 线程中止后文本框不更新
- python - 写入行数超过 45 字节的二进制文件:binascii.Error: 一次最多 45 字节
- database - Azure Cosmos DB 分区键
- c# - 如何使用问号使用 lambda/LINQ 进行通配符 DataTable 选择?
- c++ - 在 C++ 中检测不安全的 const 引用绑定
- html - Angular 7,Asp.net web api,为用户分配角色
- firebase - 在单元测试类中使用 FirebaseAuth 时出错
- ruby - 如何删除以“a”开头直到下一个“b”的子字符串?
- r - R中有没有办法直观地显示哪个属性导致层次聚类中的聚类?