- TestNG 教程
- TestNG - 首页
- 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 在不同功能上的差异。该表不包括这两个框架中都存在的非常具体或常见的功能,例如测试异常、超时设置、生命周期回调方法等。
功能 | 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 监听器支持要好得多。 |