JUnit 5 与 TestNG

Posted

技术标签:

【中文标题】JUnit 5 与 TestNG【英文标题】:JUnit 5 vs TestNG 【发布时间】:2016-11-11 10:12:31 【问题描述】:

我们使用的是 JUnit 4,但我们在测试分组方面遇到了一些问题。对于集成测试,我们遇到了运行顺序的问题。我们已于 2016 年 2 月迁移到 TestNG

现在我们正在为我们的项目启动一个新的独立模块,我们的部分团队成员需要 JUnit 5。我相信它比 4th 好多了(有一些新的重要功能,但我也看到了一些问题)。

我不想使用 JUnit 5,因为担心我们的新应用程序可能会出现问题,因为我有使用 4th 的经验。但是我必须对团队更加灵活,所以在做出决定之前,我需要有 JUnit 5 经验的用户的建议。

【问题讨论】:

JUnit5 尚未准备好生产,仅适用于最低限度的 java8。 @JulienHerr,是的。它还使用变通方法以与 junit4 兼容的方式运行自身。 还没有适用于 JUnit5 的 IDE 集成插件... 看起来你暂时没有理由进行另一次迁移;)仅供参考,在 GA 之后,IntelliJ 应该很快支持 junit5。 @JulienHerr IDEA 已经支持 JUnit 5。见 blog.jetbrains.com/idea/2016/08/using-junit-5-in-intellij-idea 【参考方案1】:

JUnit 5 引入了许多新功能。目前 Intellij IDEA 支持 JUnit 5。

看一下关于集成的文章:Using JUnit 5 in IntelliJ IDEA。

现在有一些有用的注解,比如:

@Tag 用于声明过滤测试的标签,或者在类 或方法级别;类似于 TestNG 中的测试组或类别中的 JUnit 4

@DisplayName 声明测试类或测试方法的自定义显示名称

查看更多:JUnit 5 User Guide

【讨论】:

另外,Eclipse 4.7 Oxygen 现在通过 JUnit 5 Support (BETA) for Oxygen 4.7 插件支持 JUnit 5可以在市场上安装。【参考方案2】:

TestNG 目标超越了单元测试,因此它涵盖了更广泛的测试需求,例如场景测试、集成测试、依赖测试、排序、并行执行等,但 JUnit 5 不支持这些功能。

JUnit 5 团队的路线图中包含上述这些项目,但他们正在扩展单元测试框架以支持更广泛的测试需求。让我们看看与 TestNG 相比,Junit 5 的新后续版本如何能够满足更广泛的测试需求

对于基于 Spring 的应用程序,Junit 最适合进行单元和集成测试,因为它是默认的测试框架,并且 Spring 提供了许多带有 Mockito 的测试 API。

对于一般测试和 Web 自动化 (Selenium) - TestNG 是事实。

【讨论】:

以上是关于JUnit 5 与 TestNG的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JUnit 5 与 Gradle 一起使用?

Junit 5 与 Mockito java.lang.NoSuchMethodError org.junit.platform.engine.EngineDiscoveryRequest.getDi

将 AWS Device Farm 与 JUnit 5 结合使用

Spring @DataJpaTest 与 JUnit 5

如何将 Gradle 中的原生 JUnit 5 支持与 Kotlin DSL 结合使用?

@IfProfileValue 不适用于 JUnit 5 SpringExtension