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

Neb*_*ula 16 java junit test-suite junit5

我正在尝试使用JUnit5创建测试套件.经过一些研究后,我无法断定它是否是受支持的功能.

官方用户指南,只提到套房关于向后兼容的JUnit 4.

这是在JUnit 4中完成的:

@RunWith(Suite.class)
@SuiteClasses({Test1.class, Test2.class})
public class TestSuite {
}
Run Code Online (Sandbox Code Playgroud)

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

Mah*_*zad 18

测试套件现在可以使用 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.9.1")
Run Code Online (Sandbox Code Playgroud)

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

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

@Suite
@SelectClasses(MyTestClass1::class, MyTestClass2::class)
@SelectPackages("...")
@SelectDirectories("...")
class MyTestSuite
Run Code Online (Sandbox Code Playgroud)

JUnitPlatform 运行器的弃用:

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


Sam*_*nen 13

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

苦涩套房答案:

实际上在JUnit 5中支持测试套件,但它几乎肯定不是你想要的.但是,JUnit团队正在开发一些可能适合您需求的团队.

详细解答:

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

运行器的问题在于它无法直接在JUnit平台上执行.它只能使用JUnit 4自行执行.这意味着您失去了JUnit平台的完整报告功能,因为从JUnit平台到JUnit 4的转换中丢失了信息.

总之,您可以在技术上使用运行器JUnitPlatform来使用JUnit 5执行套件,并且测试将执行,但IDE中的报告和显示将不是最理想的.

在光明的一面,JUnit的团队计划提供内置的JUnit中5套房,不从的缺点影响支持JUnitPlatform转轮JUnit 4中有关详细信息,请参阅分配到的所有问题GitHub上的"套房"的标签.

此外,还有一个功能分支,您可以通过JitPack查看可以在Maven或Gradle构建中使用的功能分支.

问候,

Sam(JUnit 5核心提交者)

  • 我的天啊!没有这样的基本功能,Junit5怎么能启动呢!我花了几个小时试图找到一种纯粹以 Junit5 方式完成此操作的方法,而不是依赖 Junit4 运行程序和依赖项! (9认同)