测试套件在 JUnit5 中是不是被认为已弃用?
Posted
技术标签:
【中文标题】测试套件在 JUnit5 中是不是被认为已弃用?【英文标题】:Are test suites considered deprecated in JUnit5?测试套件在 JUnit5 中是否被认为已弃用? 【发布时间】:2018-11-07 00:13:20 【问题描述】:我正在尝试使用 JUnit5 创建测试套件。经过一些研究,我无法得出结论它是否是受支持的功能。
official user guide 仅提及与 JUnit 4 向后兼容的套件。
这就是它在 JUnit 4 中的做法:
@RunWith(Suite.class)
@SuiteClasses(Test1.class, Test2.class)
public class TestSuite
这是否意味着测试套件现在被认为已弃用,或者相同的概念仍然可以以其他名称使用?
【问题讨论】:
据我所知,您应该使用@SelectClasses
和@SelectPackages
。
功能尚未实现:github.com/junit-team/junit5/issues/744
@Nebula,我的answer能回答你的问题吗?
@SamBrannen 是的,谢谢你的详细解释
认为@Tags 是套件的替代品?
【参考方案1】:
这是否意味着测试套件现在被视为已弃用,或者相同的概念仍然可以以其他名称使用?
苦组曲答案:
事实上,JUnit 5 支持测试套件,但几乎可以肯定这不是您想要的。但是,JUnit 团队正在开发一些可能适合您需求的东西。
详细回答:
从 JUnit 5.2 开始,对 suites 的唯一内置支持是通过 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 中的套件提供内置支持,这些套件不会受到 JUnit 4 的 JUnitPlatform
运行器的缺点的影响。有关详细信息,请参阅分配给 @ 的所有问题987654321@.
此外,已经有一个feature branch,您可以查看它可以是consumed in a Maven or Gradle build via JitPack。
问候,
Sam(JUnit 5 核心提交者)
【讨论】:
【参考方案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
The deprecation of JUnitPlatform runner:
junit-platform-suite-engine 模块提供的@Suite 支持的引入使得JUnitPlatform runner 过时了。有关详细信息,请参阅 JUnit 平台套件引擎。
【讨论】:
以上是关于测试套件在 JUnit5 中是不是被认为已弃用?的主要内容,如果未能解决你的问题,请参考以下文章
.NET Core 中是不是已弃用 ApiController
带有 @Suite 注释的 Junit5 测试套件不使用 mvn test 命令执行测试