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 与 Mockito java.lang.NoSuchMethodError org.junit.platform.engine.EngineDiscoveryRequest.getDi
将 AWS Device Farm 与 JUnit 5 结合使用