Фильтр Gradle Test не работает для сложной тестовой задачи. - PullRequest
0 голосов
/ 31 января 2020

У меня есть проект с юнит-тестами. Мы решили перейти с testng на JUnit 5, но сделаем это за пару итераций. И теперь в нашем проекте присутствуют тесты для обеих платформ.

Я справляюсь с этим, используя следующий скрипт сборки:

def commonTestConfig =
{
    ignoreFailures = true

    ...
}

task testNGTests(type: Test) {
    useTestNG()
    configure commonTestConfig
    reports.html.destination = file("$buildDir/reports/testng")
}

task junitTests(type: Test) {
    useJUnitPlatform() 
    configure commonTestConfig
    reports.html.destination = file("$buildDir/reports/junit")
}


test {
    dependsOn testNGTests
    dependsOn junitTests
}

Но если я пытаюсь запустить конкретный c тест из командной строки затем сборка завершается неудачно:

call gradle --warning-mode all test --tests my.package.LicenseTests 
Task :compileJava UP-TO-DATE
Task :processResources UP-TO-DATE
Task :classes UP-TO-DATE
Task :compileTestJava UP-TO-DATE
Task :processTestResources UP-TO-DATE
Task :testClasses UP-TO-DATE
Task :testNGTests UP-TO-DATE
Task :junitTests UP-TO-DATE
Task :test FAILED

FAILURE: Build failed with an exception.

* What went wrong: Execution failed for task ':test'.
No tests found for given includes: [my.package.LicenseTests](--tests filter)

Т.е. указанная выше команда запускает все тесты (задачи testNGTests и junitTests) без применения предоставленного фильтра. И после этого пытается найти тесты для запуска в задаче test , в которой никто не должен запускаться.

Есть ли способ запустить как тесты JUnit 5, так и testng в Gradle, в способ сохранить возможность пройти тестовый фильтр из командной строки?

...