5

对于我使用以下模板的套房:

@RunWith(JUnitPlatform.class)
@SelectPackages("com.services.configuration")
@ExcludeTags({IntegrationTags.JPA, IntegrationTags.REST})
public class UnitTestSuite {
}

@RunWith是一个 JUnit 4 依赖项,它来自

 compile "org.junit.platform:junit-platform-runner:1.0.2"

是否可以在没有 JUnit 4 依赖的情况下拥有 JUnit 5 套件?这样我就可以从我的依赖项中删除 JUnit 4 了吗?

不能用适当的@ExtendsWith扩展名替换吗?我只需要套房。

4

2 回答 2

4

运行器是一种使用 JUnit 4 执行为 JUnit 平台测试引擎编写的测试的JUnitPlatform方法,例如 JUnit Jupiter 测试。它只是不支持新 JUnit 平台的工具的临时解决方案。

JUnit 平台有一个未解决的问题来添加对声明性套件的支持:https ://github.com/junit-team/junit5/issues/744

目前,您可以继续使用 JUnit 4 来运行套件或定义自定义 Gradle 任务:

task unitTestSuite(type: Test) {
    useJUnitPlatform {
        excludeTags "JPA", "REST"
    }
    filter {
        includeTestsMatching "com.services.configuration.*"
    }
}
于 2018-04-03T19:39:17.560 回答
2

我在这里给出了类似的答案:https ://stackoverflow.com/a/68898733/2330808

您现在可以完全使用 jUnit 5 引擎运行套件:

import org.junit.platform.suite.api.SelectClasses
import org.junit.platform.suite.api.Suite

@Suite
@SelectPackages("com.services.configuration")
@ExcludeTags({IntegrationTags.JPA, IntegrationTags.REST})
public class UnitTestSuite {
}

您必须导入junit-platform-suite-engine

https://search.maven.org/artifact/org.junit.platform/junit-platform-suite-engine

例如compile "org.junit.platform:junit-platform-suite-engine:1.8.0-RC1"

这里有一些文档:

https://junit.org/junit5/docs/snapshot/user-guide/#launcher-api-engines-custom https://junit.org/junit5/docs/snapshot/api/org.junit.platform.suite。 engine/org/junit/platform/suite/engine/package-summary.html

这是一个官方的例子:

https://github.com/junit-team/junit5/blob/main/documentation/src/test/java/example/SuiteDemo.java

于 2021-08-23T20:41:08.050 回答