JUnit vs TestNG vs Mockito


JUnit 和 TestNG 是 Java 应用程序中最流行的测试框架。这两个框架都易于使用。因此,当需要为您的应用程序选择测试框架时,最好对其中一个或另一个框架具有的功能有一个高级的了解,然后根据您的项目需求做出明智的决定。

在本文中,我们将了解 JUnit 与 TestNG 的区别。

JUnit vs TestNG

JUnit 当前版本为 5.7.1,它仍在不断发展并努力包含更多功能。TestNG 当前版本为 7.4.0,它已经成熟并功能丰富。

下表比较了 JUnit 与 TestNG 在不同功能上的区别。该表排除了这两个框架中都存在的非常具体或常见的功能,例如测试异常、超时设置、生命周期回调方法等。

功能

JUnit

TestNG

结论

注解

基于注解

基于注解

JUnit 5 和 TestNG 都是基于注解的。它们在本质和行为上相似。

易用性

JUnit 5 内置于各种模块中;您需要 JUnit Platform 和 JUnit Jupiter 来编写测试用例。如果您需要更多功能,例如参数化测试,则需要添加 junit-jupiter-params 模块。

单个模块即可获得所有 TestNG 功能。

在易用性方面,TestNG 更好。

IDE 支持

受主流 IDE(如 Eclipse 和 IntelliJ IDEA)支持。

受主流 IDE(如 Eclipse 和 IntelliJ IDEA)支持。

两者都相似,并提供与主流 IDE 的轻松集成。

数据提供者

支持多种提供测试数据的方式,例如方法、枚举、CSV、CSV 文件等。

支持数据提供者方法和来自测试套件 xml 文件的数据。

JUnit 更适合注入测试方法的输入数据。

测试套件

在 JUnit 中,测试套件使用 @RunWith 和 @Suite 注解运行。

TestNG 使用 XML 文件运行套件测试。

HTML 报告

JUnit 需要外部插件 maven-surefire-report-plugin 来生成 HTML 报告。

TestNG 自动为测试运行创建 HTML 报告。

TestNG HTML 报告看起来过时了,但使用起来很简单。如果您需要与他人共享 HTML 报告,建议使用 JUnit。

从 Java 主方法运行

我们可以使用 JUnit 5 启动器 API 从 java 主方法运行测试。

我们可以使用 TestNG run() 方法从 java 主方法执行测试。

两者都支持从 java 主方法执行测试用例。

断言

JUnit 提供了足够的断言方法来比较预期和实际的测试结果。

TestNG 提供了足够的断言方法来比较预期和实际的测试结果。

两者在断言支持方面相似。

假设

JUnit 支持假设,以便根据某些条件跳过测试。

TestNG 不支持假设。

如果您想根据条件跳过测试,JUnit 更好。

测试顺序

Junit 不支持测试顺序。

TestNG 支持测试顺序,以便根据优先级属性对测试方法进行排序。

当您想要按特定顺序执行测试时,TestNG 更好。

禁用测试

JUnit 支持多种禁用和启用测试的方法。例如,基于操作系统、JRE、系统属性。

TestNG 支持禁用测试,但功能有限。

当您想根据条件禁用或启用测试时,JUnit 更好。

并行执行

JUnit 5 尚未支持并行执行。

如果通过 XML 套件运行,TestNG 支持并行执行。

目前,TestNG 更适合并行执行,JUnit 5 正在开发以支持此功能。

监听器

JUnit 通过 Launcher API 支持监听器,没有使用注解添加监听器的机制。

TestNG 支持各种类型的监听器,并且可以使用注解添加。

与 JUnit 5 相比,TestNG 监听器支持更好。

什么是 Mockito?

Mockito 是一个模拟框架,它是基于 Java 的。Mockito 和 TestNG/Junit 之间的主要区别在于 Mockito 不是一个测试框架,而后者是。模拟框架意味着为系统生成虚拟数据,可用于试运行或调试。Mockito 可以与任何测试框架(例如 Junit 或 TestNG 或其他框架)集成。

Mockito 是一个模拟框架,一个基于 Java 的库,用于有效地对 Java 应用程序进行单元测试。Mockito 用于模拟接口,以便可以向模拟接口添加虚拟功能,这些功能可用于单元测试。Mockito 方便地创建模拟对象。它使用 Java 反射来为给定的接口创建模拟对象。模拟对象只不过是实际实现的代理。

考虑一个股票服务案例,它返回股票的价格详细信息。在开发过程中,无法使用实际的股票服务来获取实时数据。因此,我们需要股票服务的虚拟实现。Mockito 可以非常轻松地做到这一点,正如其名称所示。

更新于: 2023-08-18

808 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.