Software Testing - JUnit 5 对比 TestNG

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击人工智能教程

写作本文时,JUnit 当前的版本是 5.2.0,并且它仍然在不断的更新迭代、致力于囊括更多的特质。TestNG 当前的版本是 6.14.3,并且它变得愈来愈成熟,拥有优秀功能也在增加。

特点JUnit 5TestNG总结链接
注解支持注解支持注解两者都基于注解,并且本质和用法都相似JUnit 注解TestNG 注解
易用性JUnit 5 嵌入了多种模块,你需要通过JUnit Platform 和 JUnit Jupiter 来编写测试用例单一模块是TestNG 的特点TestNG 更易用JUnit Maven 依赖TestNG Maven 依赖
IDE 支持被 Eclipse 和 IntelliJ IDEA 等主流 IDE 支持被 Eclipse 和 IntelliJ IDEA 等主流 IDE 支持两者都被主流 IDE 所支持JUnit Tests Eclipse, Eclipse TestNG 插件
数据提供方式支持多种测试数据提供方式,例如方法、枚举、CSV 数据、CSV文件等仅支持 provider 方法和testng xml 文件方式JUnit 在注入测试数据方面做得更好JUnit 参数化测试TestNG DataProvider 方法, TestNG 参数注入
测试套件JUnit 5 仍然不支持测试套件,至本文发布时仍然在开发过程中TestNG 可以将多个测试用例作为测试套件一起执行。我们可以使用 @Factory 注解来运行多个测试类。TestNG XML 支持创建复杂的测试套件。TestNG 对于测试套件有更好的支持TestNG @FactoryTestNG XML Suite
HTML 报告我们需要额外的插件 surefire-report-plugin 来生成 HTML 报告TestNG 可以在测试运行后自动创建 HTML 报告TestNG 的 HTML 报告看起来已经过时了,但是简单易用。如果你需要与其他人分享 HTML 测试报告,我建议你用JUnitJUnit HTML 报告TestNG Tutorial
从 Java 主方法运行我们使用 JUnit 5 来通过 Java 主方法来运行测试用例我们能使用 TestNG 的 run() 方法来在 Java 主方法中运行测试用例两者都支持在 Java 主方法中运行测试用例JUnit Launcher API DocsTestNG 从主方法运行
断言JUnit 提供了足够多的断言方法来对比预期和实际测试结果TestNG 提供了足够多的断言方法来对比预期和实际测试结果两者在断言方面支持是相似的JUnit Assertions
预设条件JUnit 支持预设条件来跳过特定测试用例TestNG 不支持预设条件JUnit 在基于预设条件跳过测试用例方面做的更好JUnit Assumptions
顺序测试JUnit 5 仍然不支持顺序测试,但是它计划将在 5.3 版本支持该功能。TestNG 通过 priority 属性来支持将测试方法排序当你想要测试方法安照特定顺序执行时,TestNG更合适
禁用测试用例JUnit 支持多种方式禁用和启用测试用例。例如基于 OS、JRE 和 系统配置TestNG 支持禁用测试用例,但功能性有限当你想要基于特定条件禁用或者启用测试用例时,JUnit 更适合JUnit 禁用测试用例TestNG 禁用测试用例
并行测试JUnit 5 直至现在不支持并行测试TestNG 可以通过 XML 文件配置并行测试TestNG 支持并行测试,JUnit 5 的这个功能仍然在开发中TestNG 并行测试
监听JUnit 支持通过 Launcher API 来实现监听,不能机械性添加使用注解TestNG 支持多种监听方式,并且能够使用注解TestNG 在支持监听方面比 JUnit 做的更好TestNG 监听

相同点

1.都是Java工具

2.都是单元测试框架,都可以进行单元测试

3.都是提供注解的且大部分注解相似

4.都支持:参数化测试、异常测试、超时测试、忽略测试

不同点

1.TestNG支持多线程并发测试

2.TestNG支持只运行失败的测试用例

3.TestNG支持依赖测试

4.TestNG支持分组测试

5.在JUnit 中,必须声明@BeforeClass和@AfterClass方法作为静态方法,TestNG没有这个约束。

6.TestNG可以通过优先级字段Priority确定执行顺序

7.TestNG中子类不会运行父类的@BeforeClass和@AfterClass方法;Junit中会先运行父类的@BeforeClass方法,再运行自己的@BeforeClass方法,先运行自己的@AfterClass方法,再运行父类的@AfterClass方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值