共享gradle文件,对于不使用junit 5的项目需要排除useJUnitPlatform

问题描述 投票:0回答:2

我在使用 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()
    }
}
gradle configuration dependencies
2个回答
0
投票

我找到了一个低效的方法:

 def junit5 = false
 configurations.testCompile.each { lib -> 
    if( lib.toString().contains("junit-jupiter-api") ) {
        junit5 = true;          
    }
 }

 if (junit5) {
 }

我一直在寻找一种更直接或更有效的方法来做到这一点。


0
投票

我遇到了类似的问题(一个 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")
}
© www.soinside.com 2019 - 2024. All rights reserved.