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 可以非常轻松地做到这一点,正如其名称所示。
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP