Выполнить тестовое задание Gradle в случае сбоя другого тестового задания? - PullRequest
0 голосов
/ 07 ноября 2018

Я использую 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 голосов
/ 08 ноября 2018

Если я вас правильно понимаю, то следующее должно делать то, что вам нужно. Замените задачу 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
...