如果另一个测试任务失败,则执行gradle测试任务?

时间:2018-11-07 09:27:48

标签: gradle testng build.gradle

我正在使用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"
        }
    }
}

1 个答案:

答案 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