- 测试NG教程
- 测试NG - 主页
- TestNG - 概述
- TestNG - 环境
- TestNG - 编写测试
- TestNG - 基本注释
- TestNG - 执行过程
- TestNG - 执行测试
- TestNG - 套件测试
- TestNG - 忽略测试
- TestNG - 小组测试
- TestNG - 异常测试
- TestNG - 依赖性测试
- TestNG - 参数化测试
- TestNG - 运行 JUnit 测试
- TestNG - 测试结果
- TestNG - 注释变压器
- TestNG - 断言
- TestNG - 并行执行
- TestNG - 带 ANT 的插头
- TestNG - 使用 Eclipse 进行插件
- TestNG - TestNG - 与 JUnit
- TestNG 有用资源
- TestNG - 快速指南
- TestNG - 有用的资源
- TestNG - 讨论
TestNG - 与 JUnit
JUnit 和 TestNG 是最流行的 Java 应用程序测试框架。这两个框架都很容易使用。因此,在为您的应用程序选择测试框架时,最好对其中一个或另一个中存在哪些功能有一个高层次的了解,然后根据您的项目需求做出明智的决定。
JUnit 与 TestNG
JUnit 当前版本是 5.7.1,它仍在不断发展并致力于包含更多功能。TestNG当前版本是7.4.0,已经成熟且功能丰富。
下表比较了 JUnit 与 TestNG 的不同功能。该表排除了这两个框架中存在的非常具体或常见的功能,例如测试异常、超时设置、生命周期回调方法等。
特征 | 联合单元 | 测试NG | 结论 |
---|---|---|---|
注释 |
基于注释 |
基于注释 |
JUnit 5 和 TestNG 都是基于注释的。它们在本质和Behave上都很相似。 |
使用方便 |
JUnit 5内置了各种模块,您需要JUnit Platform和JUnit Jupiter来编写测试用例。如果您想要更多功能,例如参数化测试,那么您需要添加 junit-jupiter-params 模块。 |
单个模块即可获得所有 TestNG 功能。 |
TestNG在易用性方面更胜一筹。 |
IDE支持 |
受 Eclipse 和 IntelliJ IDEA 等主要 IDE 支持。 |
受 Eclipse 和 IntelliJ IDEA 等主要 IDE 支持。 |
它们都很相似,并且可以轻松地与主要 IDE 集成。 |
数据提供者 |
支持多种方式提供测试数据,如方法、Enum、CSV、CSV文件等。 |
支持数据提供者方法和测试套件 xml 文件。 |
JUnit 更适合注入测试方法输入数据 |
测试套件 |
在 JUnit 中,测试套件使用 @RunWith 和 @Suite 注释运行。 |
TestNG 使用 XML 文件来运行 Suite 测试。 |
|
HTML 报告 |
JUnit 需要外部插件 maven-surefire-report-plugin 来生成 HTML 报告。 |
TestNG 自动为测试运行创建 HTML 报告。 |
TestNG HTML 报告看起来已经过时,但使用起来很简单。如果您必须与其他人共享 HTML 报告,我建议使用 JUnit。 |
从 Java Main 方法运行 |
我们可以使用 JUnit 5 启动器 API 从 java main 方法运行测试。 |
我们可以使用 TestNG run() 方法从 java main 方法执行测试。 |
它们都支持从 java main 方法执行测试用例。 |
断言 |
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 侦听器支持要好得多。 |