如何在相同的Gradle构建中运行JUnit5和JUnit4?

Viv*_*Viv 7 java junit junit4 gradle junit5

我读了一篇关于Maven的答案,但我想知道如何在Gradle中完成这项任务 - 在同一版本中执行JUnit 4和JUnit 5测试.

目前我的Gradle构建只接受以下测试: import org.junit.jupiter.api.Test;

我的问题是我正在使用@RunWith哪个需要JUnit4才能运行,但我想在JUnit5 Vintage Engine上执行它.

如何使我的构建能够一起运行JUnit4和JUnit5.谢谢.

更新:现在有一个Mockito Junit JupiterJUnit 5 的本机- https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter

Sor*_*ras 7

junit5迁移-gradle这个项目演示了如何基于使用JUnit的摇篮5执行测试.此外,它还展示了现有的基于JUnit 4的测试可以在与基于JUnit Jupiter的测试或JUnit平台支持的任何其他测试相同的测试套件中执行.

基本上它归结为在运行时类路径上同时具有引擎,Jupiter和Vintage:

dependencies {
    testCompile("org.junit.jupiter:junit-jupiter-api:5.2.0")
    testRuntime("org.junit.jupiter:junit-jupiter-engine:5.2.0")
}

dependencies {
    testCompile("junit:junit:4.12")
    testRuntime("org.junit.vintage:junit-vintage-engine:5.2.0")
}
Run Code Online (Sandbox Code Playgroud)

  • 您还需要将此子句添加到您的 `build.gradle` 中: `test { useJUnitPlatform() }` 或者,如果您使用 Kotlin 并且有一个 `build.gradle.kts`: `tasks.test { useJUnitPlatform() }` (5认同)
  • 我相信应该不止这些——我的 JUnit4 测试仍然没有在 ```./gradlew clean test``` 上执行 (2认同)
  • 您能否发布更多信息,例如您的`build.gradle`文件,或提供指向显示问题的最小示例项目的链接? (2认同)