我正在使用TestNG和Gradle,我要实现的目标是,如果运行测试的任务失败,请运行另一个也是test类型的任务,该任务实际上会发送测试报告。如果所有测试都通过了,就什么都不做,我知道finalizedBy,但这会以两种方式发送测试报告。
我尝试过类似的方法,但是没有运气。
task uiTest(type: Test) {
useTestNG() {
environment "DOMAIN", "${DOMAIN}"
useDefaultListeners = true
suites "src/test/resources/ui-tests/ThemeA/chrome67.xml"
}
reports {
html {
enabled true
}
reports.html.destination = "build/reports/TestReports/uiTestThemeA"
}
testLogging {
showStandardStreams = true
exceptionFormat "full"
events = ["started", "passed", "skipped", "failed"] //, "standard_out", "standard_error"]
showExceptions = true
showStackTraces = true
}
}
task testing(dependsOn: uiTest, type: Test) {
boolean state = uiTestThemeA.state.executed
if(!state) {
println name
useTestNG() {
suites "src/test/resources/ui-tests/sendReport.xml"
}
}
}
答案 0 :(得分:1)
如果我对您的理解正确,那么以下应该做您所需要的。将您的testing
任务替换为以下任务,并将uiTest
任务配置为由testing
任务完成:
task testing(type: Test) {
onlyIf { uiTest.state.failure }
useTestNG() {
suites "src/test/resources/ui-tests/sendReport.xml"
}
}
uiTest {
finalizedBy testing
}
一些注意事项:
onlyIf
语句可以满足您的需求uiTest