JUnit 5 TestSuite替代方案?

时间:2017-10-07 17:33:05

标签: java junit5

我正在从JUnit 4迁移到5,并决定将所有旧的@Tests重写为新的org.junit.jupiter.api.Test。

我的目标是完全删除旧的junit4依赖关系,只保留这些依赖关系:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.0.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.0.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-runner</artifactId>
    <version>1.0.1</version>
    <scope>test</scope>
</dependency>

到目前为止,我已经重写了除了我的TestSuites之外的所有东西,我用它将所有测试集群到4个独立的套件中,可以通过surefire插件调用。

似乎JUnit 5根本没有声明性套件支持,但确实有@Tag注释。

问题:

如何创建某种类型的测试套件 - 仅使用JUnit 5的东西,可以使用maven-surefire-plugin(<includes>)和可运行的IntelliJ调用?

1 个答案:

答案 0 :(得分:3)

尽管拥有丰富的junit-platform-suite-api,但由于平台上没有本机测试套件支持,因此目前(2018年6月)是不可能的。相反,您必须使用依赖于junit-4.12.jar的junit-platform-runner来识别和运行套件。

@RunWith(JUnitPlatform.class)
@SelectClasses({Dog.class, Cat.class})
public class MyTestSuite {
}

不过,根据this github issue,该平台的1.3版本可能会提供本机支持。

我删除了所有测试套件,以免项目中完全没有junit 4。当新功能可用时,我将很高兴再次创建它们。