在JUnit5中,测试套件是否被视为已过时?

1l5u6lss  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(145)

我正在尝试用JUnit5创建测试套件。经过一些研究,我无法得出它是否是一个受支持的特性的结论。
官方的用户指南只提到了套件与JUnit 4的向后兼容性。
这是在JUnit 4中完成的:

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

这是否意味着,测试套件现在被认为是过时的,或者相同的概念仍然可以在另一个名称下使用?

slmsl1lt

slmsl1lt1#

这是否意味着,测试套件现在被认为是过时的,或者相同的概念仍然可以在另一个名称下使用?

苦涩 * 套房 * 答案:

事实上,JUnit 5中有对测试套件的支持,但几乎可以肯定这不是您所需要的,然而,JUnit团队正在研究可能适合您需要的东西。

详细答案:

从JUnit 5.2开始,对 * 套件 * 的唯一内置支持是通过JUnitPlatformRunner 提供的(通过@RunWith(JUnitPlatform.class)注册)。该运行程序实际上启动了JUnit平台(也称为JUnit 5基础结构),并允许您针对各种编程模型(如JUnit 4和JUnit Jupiter)执行测试。(例如,类、包等)并配置包括和排除过滤器(例如,用于标签或测试引擎)。
这个runner的问题是,它不能直接在JUnit平台上执行。它 * 只能 * 使用JUnit 4自己执行。这意味着您失去了JUnit平台的全部报告功能,因为信息在从JUnit平台到JUnit 4的转换过程中丢失了。
总之,从技术上讲,您可以使用JUnitPlatform runner来执行使用JUnit 5的套件,测试也会执行,但IDE中的报告和显示将不是最佳的。
从好的方面来说,JUnit团队计划为JUnit 5中的套件提供内置支持,这样就不会受到JUnit 4的JUnitPlatform运行程序的缺点的影响。有关详细信息,请参阅分配给"suites" label on GitHub的所有问题。
此外,已经有一个feature branch可供您查看,它可以通过JitPack在Maven或Gradle构建中使用。
此致!
Sam(JUnit 5核心提交者)

dwbf0jvd

dwbf0jvd2#

现在可以使用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")

下面是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平台套件引擎。

相关问题