测试套件在 JUnit5 中是否被视为已弃用?

2022-09-01 03:55:15

我正在尝试使用JUnit5创建测试套件。经过一些研究,我无法得出结论它是否是受支持的功能。

官方用户指南仅提及与 JUnit 4 向后兼容的套件。

这是在JUnit 4中完成的:

@RunWith(Suite.class)
@SuiteClasses({Test1.class, Test2.class})
public class TestSuite {
}

这是否意味着,测试套件现在被视为已弃用,或者相同的概念是否仍然以其他名称提供?


答案 1

这是否意味着,测试套件现在被视为已弃用,或者相同的概念是否仍然以其他名称提供?

涩套房答案:

事实上,JUnit 5 中支持测试套件,但几乎可以肯定的是,这不是您要查找的。但是,JUnit 团队正在研究一些可能适合您需求的东西。

详细答案:

从 JUnit 5.2 开始,套件的唯一内置支持是通过 Runner(通过 注册)。该运行器实际上启动了JUnit平台(又名JUnit 5基础架构),并允许您针对各种编程模型(如JUnit 4和JUnit Jupiter)执行测试。它还允许您选择各种内容(例如,类,包等)并配置包含和排除过滤器(例如,用于标记或测试引擎)。JUnitPlatform@RunWith(JUnitPlatform.class)

运行器的问题在于它不能直接在JUnit平台上执行。它只能使用 JUnit 4 本身执行。这意味着您将失去 JUnit 平台的全部报告功能,因为在从 JUnit 平台到 JUnit 4 的转换过程中会丢失信息。

总而言之,从技术上讲,您可以使用运行器通过 JUnit 5 执行套件,并且将执行测试,但 IDE 中的报告和显示将不理想。JUnitPlatform

从好的方面来说,JUnit团队计划为JUnit 5中的套件提供内置支持,该套件不会受到JUnit 4运行器缺点的影响。有关详细信息,请参阅分配给 GitHub 上“套件”标签的所有问题。JUnitPlatform

此外,已经有一个功能分支,你可以通过JitPack在Maven或Gradle构建中使用

问候

Sam (JUnit 5 core commiter)


答案 2

测试套装现在可以使用JUnit 5套件引擎(从版本5.8.0开始)运行

// Aggregator dependency for junit-platform-suite-api and junit-platform-suite-engine
implementation("org.junit.platform:junit-platform-suite:1.8.1")

以下是 Kotlin 的代码(替换为 Java):::class.class

import org.junit.platform.suite.api.*

@Suite
@SelectClasses(MyTestClass1::class, MyTestClass2::class)
@SelectPackages("...")
@SelectDirectories("...")
class MyTestSuite

JUnitPlatform运行器的弃用:

junit-platform-suite-engine 模块提供的@Suite支持的引入使 JUnitPlatform 运行器过时了。有关详细信息,请参阅 JUnit 平台套件引擎。


推荐