Gradle 如果另一个测试任务失败,是否执行梯度测试任务?

Gradle 如果另一个测试任务失败,是否执行梯度测试任务?,gradle,testng,build.gradle,Gradle,Testng,Build.gradle,我使用的是TestNG和Gradle,我试图实现的是,如果运行测试的任务失败,那么运行另一个同样是类型测试的任务,它实际发送测试报告。如果所有测试都通过,不要做任何事情,我知道finalizedBy,但这会以任何方式发送测试报告 我试过这样的方法,但没有成功 task uiTest(type: Test) { useTestNG() { environment "DOMAIN", "${DOMAIN}" useDefaultListeners = true

我使用的是TestNG和Gradle,我试图实现的是,如果运行测试的任务失败,那么运行另一个同样是类型测试的任务,它实际发送测试报告。如果所有测试都通过,不要做任何事情,我知道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"
        }
    }
}

如果我理解正确,那么下面的内容应该可以满足您的需要。将
测试
任务替换为以下任务,并将
uiTest
任务配置为由
测试
任务完成:

task testing(type: Test) {
    onlyIf { uiTest.state.failure }
    useTestNG() {
        suites "src/test/resources/ui-tests/sendReport.xml"
    }
}

uiTest {
    finalizedBy testing
}
一些注意事项:

  • onlyf
    语句实现了您想要的魔力
  • 这假设您执行
    uiTest

也许这个答案有帮助?它似乎与您的用例相似:是的,尝试过,没有成功