来源:Dev.to Java 单元测试框架为开发人员提供标准、复杂且可扩展的工具来创建应用程序或任何其他软件。它们由大量包含预先编写的代码的对象组成。根据测试框架的选择,它包括库、编译器、工具和 API。Java 单元测试框架为应用程序提供强大的安全控制。如果发现安全漏洞,可以在框架的网站/支持上修复。框架创建者甚至提供内置函数和模块,以提高程序员和测试人员的效率和速度。这十年对测试平台有何期待?我们向您展示了截至 2020 年最佳 Java 测试框架的列表。
1.J行为
JBehave是最好的 Java 测试框架之一,支持 BDD(行为驱动开发)。BDD 是 TDD(测试驱动开发)和 ATDD(验收测试驱动开发)的演进延续。 Jbehave的主要发行版:- J行为网,
- JBehave 核心。
- Commons-lang-2.4.jar
- Junit-4.1.0.jar
- Jbehave-core-3.8.jar
- Freemarker-2.3.9.jar
- Plexus-utils-1.1.jar
- 参数-2.5.jar
- org.apache.commons.collections.jar
- org.apache.commons.io.jar
- JBehave 的测试框架因其周到的细节和直观的易用性而表现出色。
- JBehave 在 BDD 方面做得非常出色,它提供了处理不同项目但具有相似规范的不同开发团队之间的集成。
- JBehave框架使用半官方语言,这对开发人员非常有帮助。领域词汇确保团队结构的一致性。
- 由于规范遵循相同的格式,利益相关者和项目经理可以更加透明地了解测试团队和开发团队的绩效。
2.JUnit
JUnit是一个开源回归测试框架,主要由经验丰富的开发人员使用来执行单元测试、加快编程速度并提高 Java 代码的质量。使用此工具的主要目的是使 Java 开发人员能够编写脚本并实现可重复的测试用例。它是Java中最常用的单元测试框架之一。大多数情况下,JUnit 用于测试小段代码。通过将 Selenium WebDriver 与 JUnit 结合起来进行自动化 Java 测试,它还可以用于执行自动化网站测试。添加任何新代码时,测试人员将被要求重新加载完整的测试用例并确保没有中断。 JUnit 特点:- 测试套件;
- 使用常见的对象集;
- JUnit 类;
- 测试运行者。
- 您的计算机上有最新版本的 JDK。
- (可选)解压 $JUNIT_HOME/src。jar 文件。
- 使用面向对象语言(最好是 Java)开发应用程序的技能和经验。
- 下载新版本的 JUnit 并配置框架。
- 由于 JUnit 支持 Java 8 功能,因此它可以用于集成测试和单元测试。
- 该框架可以轻松地在早期阶段检测到错误,从而生成健康可靠的代码。
- 使用 JUnit 的程序员发现它非常有用。它使阅读代码和检查漏洞变得更加容易。
- JUnit 允许您创建没有错误且具有更好可读性的代码。
- 兼容几乎所有主流 IDE,如 Eclipse、NetBeans、Maven、Ant 和 IntelliJ IDEA。因此,您可以直接从这些 IDE 轻松编写和运行单元测试。
- 使用更新版本的 JUnit(版本 5),您可以轻松定义异常。
- 单元测试框架可以与Java 5或其他版本一起使用。
3. 宁静
Serenity以前称为 Thucydides,是使用最广泛的开源 Java 测试框架之一。Serenity BDD 框架将帮助您创建清晰、结构化且可管理的测试标准。它扩展了 Selenium WebDriver 和 JUnit 的功能。通过这个专用平台,您可以创建描述性测试报告。此外,您可以将自动化测试与您的需求相匹配。总体而言,该框架使Java开发更加可靠和高效。 宁静特点:- 开源项目;
- 有关测试和实施结果的完整报告;
- 每次测试的商业格式报告。
- JDK 5 或更高版本。
- Maven 3.0 或更高版本。
- IDE(通常是 Eclipse)。
- 该框架帮助测试人员为 REST 服务创建测试用例。
- 在测试用例的描述和理解及其实现方法之间保持平衡。
- 用户不需要花费额外的时间维护或创建自己的自动化基础设施。
- Serenity可以与各种开发框架(例如Spring)和测试框架(例如Selenium、JBehave)以及项目管理工具(例如JIRA)集成。
4.测试NG
TestNG是最流行的 Java 测试框架之一,用于集成、功能和单元测试。它由Cedric Beist于2004年创建,现已更新至版本7。它是JUnit框架的主要竞争对手。TestNG 与 JUnit 类似,但有一些 Junit 不支持的注释和功能。TestNG 可用于几乎所有类型的软件测试,包括端到端、单元、集成和功能。TestNG 和 JUnit 都是基于 Java 的框架,允许您编写测试并验证最终结果。如果测试成功,您将看到绿色条,否则您将看到红色条。 TestNG的特点:- 支持依赖方法的测试;
- 灵活的测试配置;
- 支持稳健的执行模型;
- 安装在 BeanShell 中以增加灵活性。
- 最新的JDK版本;
- 最新版本的Eclipse;
- 对Java编程语言或其他面向对象编程语言的理解和实践经验。
- 允许您创建和运行多个代码片段的并行测试。
- 实施测试用例时,您可以生成 HTML 格式的报告。
- 可以根据优先级轻松组织和分组测试。只需放置框架来进行外部或数据库测试,运行测试就容易得多。
- 通过参数化数据和使用注释可以轻松设置优先级。
5.硒化物
Selenide是一个流行的开源 Java 测试框架,由 Selenium WebDriver 提供支持。它是为 Java 应用程序编写准确、可交流且稳定的 UI 测试的优秀工具。它扩展了 WebDriver 和 JUnit 的功能。WebDriver 是我们最喜欢的 UI 测试工具之一,但它缺乏超时功能。例如,测试 Ajax 等 Web 技术。Selenide 框架可以轻松处理所有这些问题。另外,它更容易安装和学习。您只需专注于逻辑,Selenide 将完成剩下的工作。 硒化物特点:- 不需要复杂的设置;
- 不需要编写大量代码;
- 节省大量时间;
- Jenkins 等 CI 工具的理想配置。
- JDK 5 或更高版本;
- Maven 3.0或其他版本;
- 集成开发环境(IDE)工具。大多数情况下,所有开发人员都更喜欢 Eclipse,因为 Eclipse 和 Maven 的组合更易于使用。
- Selenide 使您的测试准确且稳定,解决(几乎)所有 Ajax/计时问题。
- 减少编写测试用例的过程。
- 支持使用 AngularJS 开发的应用程序的测试。
- 减少其他 Selenium 工具之前使用的命令数量。
6.仪表
Selenium Thoughtworks 的创建者发布了另一个 Java 测试框架,用于对 Web 应用程序执行自动化测试。Gauge是一个免费的开源 Java 测试自动化框架,可以用更少的代码减轻验收测试的负担。它是用于测试移动网站的技术堆栈类别中最常用的 Java 测试框架之一。无论语言如何,使用此框架的自动化测试都可以生成易于阅读的测试。与Selenium类似,这个测试框架支持多种编程语言,包括Ruby、JavaScript、Java、C#和Python。 仪表特点:- 使用方便,语法灵活;
- 使用商务语言;
- 支持多种语言和平台;
- 很多插件。
- 下载并安装Maven;
- 操作系统 Microsoft Windows 10 或更高版本;
- 内存 – 512 MB RAM(最低);
- 必须使用集成开发环境 (IDE) 配置 Gauge 插件,或者如果您从 CMD/终端运行测试,则必须安装 Gauge 框架。
- 使脚本可读且易于理解。
- 易于使用,语法灵活,支持所有类型的语言(Java、Javascript、C#、Ruby、Python 等)和平台。
- 允许您在您选择的集成开发环境 (IDE)(IntelliJ、Vi VS Code、Visual Studio、Maven、Gradle、Eclipse 等)中创建测试。
- 执行并行测试并生成自定义报告。
- 轻松测试大型数据集,同时保持高精度和可读性。
- Gauge是一个新框架,所以用户对它了解不多。
- 由于驱动程序是静态的并且必须与脚本结合使用,Gauge 不支持 IntelliJ 内规范的安全并行实现。
7. 盖布
Geb 是一个构建在 Selenium WebDriver 之上的浏览器测试框架。这使得它非常适合自动化测试,您可以轻松地在 WebDriver 支持的所有浏览器上执行跨浏览器测试。Geb 为前端数据分析、Web 测试等提供了非凡的功能。它的独特之处在于它查询 HTML 页面的方式,产生类似 jQuery 的语法。Geb 平台还提供对页面对象模型的本机支持。Geb 可用于一般抓取、脚本编写,也可用于自动化。由于它与 TestNG、JUnit 和 Spock 等测试框架集成,因此它同样适合作为验收测试、Web 测试或功能测试的解决方案。 盖布特点:- 完整的 jQuery 语法支持;
- 阿帕奇许可证 2.0;
- 兼容网络驱动程序;
- 页面对象建模的稳定性;
- Groovy 的发音。
- 页面对象表单和 Geb 的 Groovy DSL 使测试易于阅读,因为它们或多或少类似于英语。
- 高速运行测试并节省您的测试成本。兼容多种浏览器,如 Internet Explorer、HTMLUnit、Firefox 和 Chrome。
- 在用户会观察到的真实环境中实时执行测试。在单个脚本中提供最大的测试效率。
- 允许您毫无问题地进行回归测试。您可以运行 Geb 测试用例来检查应用程序中的修改或修复后是否有任何活动功能被破坏。
- Geb 的缺点是它使用 Groovy 语言中的 WebDriver。因此,使用 Webdriver 时仅支持该特定语言。但是,如果您尝试直接使用 WebDriver,它将支持其他语言,包括 Java、Ruby、C# 和 Python。
- Geb 不适合小型项目,但适用于大型任务。如果您的 Web 应用程序不包含数据必须流经的页面和表单,则其结构可能看起来很笨重。
8.斯波克
Spock是一个流行的 Java 测试自动化框架。它是用 Groovy 编写的,允许测试人员在 Java 虚拟机上运行数据驱动的测试。Spock 与许多支持 JVM 的语言提供了出色的兼容性。Spock的特点之一是代码文档和代码可读性有条理、整齐,并且可以解释简单的英文句子。软件开发人员经常使用它来用 Java 创建企业应用程序。由于这些原因,Spock 成为 2020 年最流行、最用户友好的 Java 测试框架。 斯波克特点:- 事实上,这是 JUnit Java 框架的扩展版本;
- 支持模拟对象;
- 测试可以用任何语言编写。
- 最新的JDK版本;
- 更新Eclipse版本;
- 了解 Java 编程语言。
- 与其他 Java 自动化测试框架相比,具有令人惊叹的可读性,提供与简单英语句子的兼容性。
- 使用 Spock 进行存根和模拟比以往任何时候都更容易、更轻松。此外,它们内置于框架中。
- 更清晰、更短的参数化。
- 维护周围环境,更容易发现故障原因。
- 简化且可交流的领域特定语言 (DSL)。
- 它是用 Groovy 编写的,因此您必须具备 Groovy 的基本知识。
- 您可能会发现 Spock 框架有点笨重,但是一旦熟悉了它,您就不会考虑切换到其他 Java 测试框架。
9. HttpUnit
HttpUnit是一个广泛使用的开源测试框架。它允许您在没有任何浏览器要求的情况下测试网站。HttpUnit 非常适合运行 Web 应用程序的自动化测试脚本。顾名思义,HttpUnit 可用于单元测试。然而,常见的 Web 层元素(例如 Servlet、JSP(JavaServer Pages)和其他模板元素)不适合单元测试。该框架用 Java 编写,允许您在返回的页面、XML DOM、文本、表容器、链接和表单上运行测试。 HttpUnit的特点:- Cookie 支持;
- 支持HTTPS和HTTP协议;
- HTML 响应支持;
- 代理服务器支持;
- 出色的 JavaScript 支持。
- 系统必须支持Java JDK 1.4或最新版本。
- 将与 HttpUnit 集成的 Tidy.jar 和 httpunit.ja 添加到您的类路径中;还要确保预安装了 XML 解析器。
- 如果您使用旧版本的 Java,则必须在类路径中包含与 JAXP 兼容的 XML 解析器。
- 此页面提供了 HttpUnit 的最新版本。
- 允许您自动测试 Web 应用程序并帮助进行回归测试。
- HTTPUnit 的好处之一是它比其他测试自动化框架(例如 Selenium)快得多。
- 出色的 JavaScript 支持,允许您模拟自定义浏览器(IE 或 Firefox)的工作。
- HTTPUnit 使用Rhino JavaScript 引擎作为其核心语言,并为浏览器实现提供精确的对象执行。
- 来自流行JavaScript库的单元测试基于这些单元测试被集成到HtmlUnit自己的单元测试中。支持 jQuery 1.11.3、MochiKit 1.4.1、MooTools 1.2.1 等库,与 HtmlUnit 配合良好。
- 能够使用 HtmlPage.executeJavascript(String yourJsCode) 将代码插入当前页面。
- 对于运行简单测试来说这是一个不错的选择,但创建复杂测试将需要更多代码。
- 像 Selenium 这样的框架更加具体,允许以浏览器为中心的行为,而不会限制正在测试的应用程序。使用 HttpUnit 框架,除了某些主要浏览器之外,您将获得有限的支持。
10.JWebUnit
JWebUnit是一个基于Java 的测试框架,是JUnit 的扩展。它用于集成、回归和功能测试。JWebUnit 将 HTMLUnit 和 Selenium 等当前活跃的框架与简单的测试界面相结合。这样您就可以立即检查网络应用程序的准确性。JWebUnit 可用于执行屏幕导航测试。该平台还提供高级 Java 应用程序编程接口,用于导航 Web 应用程序以验证应用程序的准确性。这考虑到了链接导航、表单输入和提交、表格内容的合理性以及业务应用程序的其他常见功能。 JWebUnit的特点:- 用于导航 Web 应用程序的顶级 Java API。
- 基于 Java 的开源框架。
- 您需要安装 Maven。
- JWebUnit 当前的稳定版本是 3.3。需要 Java 1.7。
- 添加您需要的插件:HtmlUnit,以实现更快的测试以及对 Javascript 和 Webdriver 的出色支持:BETA 质量。
- 要在使用 Maven 2 时管理 Eclipse 中的依赖项,请使用 m2e 插件。
- 用于测试屏幕导航。
- 提供用于导航 Web 应用程序的顶级 API。
- 通过简单的导航和易于访问的断言,您可以比使用 JUnit 或 HtmlUnit 更快地创建测试。
- 如果有人希望从 HtmlUnit 切换到其他类型的插件(例如 Selenium),则无需重写测试。
GO TO FULL VERSION