我在使用 junit 4 的多个项目上使用共享 gradle 文件来提高代码质量。我正在创建一个新服务,我想在其中利用 junit 5。我遇到的问题是我需要一种方法来仅在以下情况下包含 useJUnitPlatform该项目具有 junit-jupiter-engine 依赖性。 我可以使用configurations.testCompile获取依赖项,但我一直无法找到一个好的解决方案来添加一个条件,当且仅当 junit-jupiter-engine 存在时才包含 useJUnitPlatform 。
为了代码质量,我想保留共享的 gradle 文件,并保留使用 junit4 的旧项目继续使用它,直到我决定升级。
任何想法将不胜感激。
test {
configurations.testCompile.each { println it }
if (???) {
useJUnitPlatform()
}
}
我找到了一个低效的方法:
def junit5 = false
configurations.testCompile.each { lib ->
if( lib.toString().contains("junit-jupiter-api") ) {
junit5 = true;
}
}
if (junit5) {
}
我一直在寻找一种更直接或更有效的方法来做到这一点。
我遇到了类似的问题(一个 Android 项目,其中一些测试需要使用 JUnit 5 运行,而其他一些测试则需要 Robolectric + JUnit 4)。
经过更多搜索后,我偶然发现了这个答案,它引用了 JUnit 5 迁移指南 - tl;dr:添加 JUnit 5、JUnit 4 和
junit-vintage-engine
的依赖项:
dependencies {
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("junit:junit:4.13.2")
testRuntimeOnly("org.junit.vintage:junit-vintage-engine:5.10.2")
}