Ответ 1
Основано на https://github.com/gradle/gradle/issues/6172#issuecomment-409883128
test {
useJUnitPlatform {
excludeTags 'integration'
}
}
task integrationTest(type: Test) {
useJUnitPlatform {
includeTags 'integration'
}
check.dependsOn it
shouldRunAfter test
}
Бег
-
gradlew test
будет запускать тесты без интеграции -
gradlew integrationTest
запустит только интеграционный тест -
gradlew check
запуститtest
последующимintegrationTest
test
-
gradlew integrationTest test
запуститtest
последующимintegrationTest
test
примечание: заказ поменялся из-заshouldRunAfter
история
- Gradle 4. 6+ изначально поддерживает JUnit 5
- JUnit 5 устарел их плагин: https://github.com/junit-team/junit5/issues/1317
- JUnit 5 удалил
plugin: 'org.junit.platform.gradle.plugin'
- JUnit 5 закрыл junit5 # 579 (так же, как вопрос OP), так как не будет исправлено (из-за снятия с эксплуатации их плагина)
- Gradle поддерживает вышеуказанную функцию: https://github.com/gradle/gradle/issues/6172
Совет
Примечание: несмотря на то, что вышеприведенное работает, IntelliJ IDEA трудно вывести вещи, поэтому я предлагаю использовать эту более явную версию, где все набрано, и завершение кода полностью поддерживается:
tasks.withType(Test) { Test task ->
task.useJUnitPlatform { org.gradle.api.tasks.testing.junitplatform.JUnitPlatformOptions options ->
options.excludeTags 'integration'
}
}
task integrationTest(type: Test) { Test task ->
task.useJUnitPlatform { org.gradle.api.tasks.testing.junitplatform.JUnitPlatformOptions options ->
options.includeTags 'integration'
}
tasks.check.dependsOn task
task.shouldRunAfter tasks.test
}