Зависимости задачи Gradle: «запустить интеграционные тесты» против «развернуть, запустить интеграционные тесты, уничтожить развертывание» - PullRequest
0 голосов
/ 03 января 2019

У меня есть несколько сложная задача развертывания, а также задача тестирования интеграции.На данный момент моя задача тестирования интеграции зависит от задачи развертывания.Тем не менее, я хотел бы иметь своего рода задачу-обертку для задачи тестирования интеграции, чтобы я мог создать задачу, которая просто запускает тест интеграции против того, что в данный момент выполняет и задачу для развертывания, запуститетест интеграции, а затем снова запустите развертывание.

Это текущее состояние:

task integrationTest(type: Test, dependsOn: "startWebappNodes") {
  testClassesDirs = sourceSets.integrationTest.output.classesDirs
  classpath = sourceSets.integrationTest.runtimeClasspath
  outputs.upToDateWhen { false }
}

task runIntegrationTests(type: Exec, dependsOn: "integrationTest") {
    commandLine 'docker-compose', 'down'
    doLast {
        println "Integration tests running finished"
    }
}

Как мне написать задачу, назовем ее executeIntegrationTest, которая выполняет интеграциютестирование без зависимости от startWebAppNodes, а затем также есть тест, который запускает startWebAppNodes, затем executeIntegrationTest, затем снова отключает узлы?

1 Ответ

0 голосов
/ 03 января 2019

Существует более простой способ: использовать две основные задачи для запуска интеграционного теста:

  • первая (ваша текущая задача integrationTest) для выполнения тестов автономным способом (без развертывания / выключения),
  • вторая (ваша текущая задача runIntegrationTests), чтобы обернуть первую задачу и обработать узлы развертывания / завершения работы.

1) Удалить зависимость dependsOn междуintegrationTest задача и startWebappNodes

=> вы можете выполнить эту задачу integrationTest "автономно" ( против того, что в данный момент выполняется )

./gradlew integrationTest
    // execution of dependent task 

  > Task :integrationTest
    // .. test executing...

2) Обновите задачу runIntegrationTests, чтобы она зависела от задач integrationTest и startWebappNodes, а также добавьте ограничение для выполнения startWebappNodes до integrationTest, используя mustRunAfter

task runIntegrationTests(type: Exec) {
    group "test"
    dependsOn startWebappNodes
    dependsOn integrationTest
    commandLine 'docker-compose', 'down'
    doLast {
        println "Integration tests running finished"
    }
}

integrationTest.mustRunAfter startWebappNodes

=> при выполнении задачи runIntegrationTests он запустит узлы, выполнит интеграционный тест, затем завершит работу узлов

./gradlew runIntegrationTests
    // execution of dependent task 

  > Task :startWebappNodes

  > Task :integrationTest
    // .. test executing...

  > Task :runIntegrationTests
    Integration tests running finished
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...