我正在尝试用JUnit5创建测试套件。经过一些研究,我无法得出它是否是一个受支持的特性的结论。官方的用户指南只提到了套件与JUnit 4的向后兼容性。这是在JUnit 4中完成的:
@RunWith(Suite.class) @SuiteClasses({Test1.class, Test2.class}) public class TestSuite { }
这是否意味着,测试套件现在被认为是过时的,或者相同的概念仍然可以在另一个名称下使用?
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核心提交者)
JUnitPlatform
@RunWith(JUnitPlatform.class)
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):
::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平台套件引擎。
2条答案
按热度按时间slmsl1lt1#
这是否意味着,测试套件现在被认为是过时的,或者相同的概念仍然可以在另一个名称下使用?
苦涩 * 套房 * 答案:
事实上,JUnit 5中有对测试套件的支持,但几乎可以肯定这不是您所需要的,然而,JUnit团队正在研究可能适合您需要的东西。
详细答案:
从JUnit 5.2开始,对 * 套件 * 的唯一内置支持是通过
JUnitPlatform
Runner 提供的(通过@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核心提交者)
dwbf0jvd2#
现在可以使用JUnit 5套件引擎(从5.8.0版本开始)运行测试套件。
下面是Kotlin的代码(对于Java,请将
::class
替换为.class
):不赞成使用JUnitPlatform运行程序:
junit-platform-suite-engine模块提供的@Suite支持的引入使得JUnitPlatform运行器过时。有关详细信息,请参见JUnit平台套件引擎。