Selenium 什么是TestNG和JUnit框架
JUnit和TestNG是Java应用程序或Selenium最流行的测试框架。这两个框架都很容易使用。因此,在选择应用程序的测试框架时,最好对其中一个或另一个的功能有一个大致了解,然后根据项目需求做出明智的决定。
本文将讨论JUnit和TestNG。
什么是TestNG
根据其文档,TestNG的定义如下:
TestNG是一个受JUnit和NUnit启发的测试框架,但引入了一些新的功能,使其更强大且易于使用。
TestNG是一个开源的自动化测试框架,其中NG代表NextGeneration。TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit的扩展。它受到JUnit的启发。它的设计目标是比JUnit更好,特别是在测试集成类时。TestNG的创建者是Cedric Beust。
通过消除旧框架的大多数限制,TestNG使开发人员能够编写更灵活和强大的测试。由于它大量借鉴了Java注解(自JDK 5.0引入)来定义测试,它还可以向您展示如何在真实的生产环境中使用Java语言的这个新特性。
什么是JUnit
Junit已经推动了开发人员理解与任何其他测试框架相比,特别是单元测试的有用性。通过充分利用简单、实用和严格的架构,JUnit已经成功“传染”了大量开发人员。请查看我们的JUnit教程,以深入了解其功能。同时,JUnit也有一些不足之处,如下所列:
- 最初只设计用于单元测试,现在用于各种测试。
-
无法进行依赖性测试。
-
配置控制差(setUp/tearDown)。
-
侵入性(强制您扩展类并以某种方式命名方法)。
-
静态编程模型(不必要地强制您重新编译)。
-
在复杂项目中管理不同测试套件可能非常棘手。
JUnit vs TestNG
JUnit的当前版本是5.7.1,仍在不断发展并努力加入更多功能。TestNG的当前版本是7.4.0,已经成熟且功能丰富。
以下表格比较了JUnit和TestNG在不同功能上的差异。表格不包括在这两个框架中都存在的非常具体或常见的功能,例如测试异常、超时设置、生命周期回调方法等。
功能 | JUnit | TestNG | 结论 |
---|---|---|---|
注解 | 基于注解 | 基于注解 | JUnit 5和TestNG都是基于注解的。它们在性质和行为上相似。 |
使用简便性 | JUnit 5内置了各种模块;你需要JUnit平台和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 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目前尚不支持并行执行。 | TestNG通过XML套件运行支持并行执行。 | 目前来说,TestNG在并行执行方面更好,JUnit 5的开发正在进行以支持这一特性。 |
监听器 | JUnit通过Launcher API支持监听器,没有机制可以使用注解添加监听器。 | TestNG支持各种类型的监听器,并且可以通过注解添加。 | 相比于JUnit 5,TestNG的监听器支持更好。 |