概述 10 个很棒的测试框架、工具和库,以提高您的自动化测试技能。最近,我写了一些关于Java开发人员今年应该学习什么的文章,例如编程语言,库和框架,但如果你只有一件事需要改进或学习,那么那一定是你的自动化测试技能。
测试是将专业开发人员与业余开发人员区分开来的学科之一。这不是关于遵循TDD,BDD或任何测试方法,但在最低级别,您必须编写代码来自动测试代码。
许多 Java 开发人员编写在构建期间自动运行的单元测试和集成测试,主要是通过使用 Jenkins 或 TeamCity 等持续集成工具。
如果你们中的一些人想知道为什么程序员应该专注于自动化测试,那么让我告诉你,由于对DevOps的认识和出现,自动化测试的重要性正在呈指数级增长。
公司通常更喜欢擅长编写单元测试并表现出对各种单元测试框架,库和工具(例如JUnit,Selenium,REST-Assured,Spock框架等)的良好知识的程序员。
作为一名 Java 开发人员,我们在非常不同的领域工作,从编写核心 Java 代码到创建 JSP 页面、编写 REST API,有时甚至创建用于构建自动化的 Groovy 脚本。这就是为什么我们还需要了解我们可以用来自动化测试的不同工具。
例如,我只认识JUnit很长一段时间,但是当我不得不测试我的JSP页面时,直到我找到硒,我才一无所知。“放心”也是如此,因为我通常使用 curl 命令测试我的 REST API,但“放心”将 REST API 的单元测试提升到另一个级别。
10 个适用于 Java 程序员的有用单元和集成测试工具
因为我相信程序员和他们的工具一样好,所以我总是试图在空闲时间学习和探索新的工具和库,这个列表是研究的一部分。
在本文中,我将分享10个最佳和必要的工具,框架和库,这些工具,框架和库可以帮助Java开发人员在其各种Java项目上编写单元测试和集成测试。
1. 日本
我不认为JUnit需要任何介绍。即使你是一个初学者Java程序员,你可能也听说过它。它允许您为 Java 代码编写单元测试。
几乎所有主要的 IDE,例如 Eclipse、NetBeans 和智能集成,都提供 JUnit 集成,这意味着您可以直接从这些 IDE 编写和运行单元测试。
我们大多数人仍在使用JUnit 4,但JUnit 5已经发布,可能是今年要看的下一件事。您可以使用 JUnit 进行单元和集成测试,它还支持 Java 8 功能部件。
顺便说一句,如果你在单元测试领域是全新的,特别是在Java单元测试中,那么这个JUnit和Mockito速成课程是一个很好的起点。
2. 放心
在 Java 中测试和验证 REST 服务比在动态语言(如 Groovy)中更难。
“放心”将这些语言的简单性带入了 Java 域。它是用于 REST API 集成测试的绝佳工具。
3. 硒
Selenium 可能是 Java UI 测试中最受欢迎的工具,它允许您测试 JSP 页面,而无需在浏览器中启动它们。
您可以使用 JUnit 和硒测试您的 Web 应用程序 UI。它甚至允许您编写Web应用程序验收测试
4. 测试
TestNG是一个受JUnit和NUnit启发的测试框架,但引入了许多新功能,使其更强大,更易于使用,例如注释,在具有各种可用策略的任意大线程池中运行测试(所有方法都在自己的线程中,每个测试类一个线程等)。
由于使用了JUnit 4的注释并集成了汉克雷斯特匹配器,JUnit和TestNG之间的差距已经缩小,但这取决于你。
5.莫基托
Java类有许多模拟框架,例如PowerMock和JMock,但我个人喜欢Mockito的简单API,出色的文档和大量示例。
模拟是现代单元测试的基本技术之一,因为它允许您在没有任何依赖关系的情况下孤立地测试代码,这就是为什么我鼓励每个Java开发人员与JUnit一起学习模拟框架。
我最喜欢的嘲笑框架是莫基托,但如果你愿意,你也可以探索PowerMock或JMock。
6. 斯波克框架
Spock 是另一个用于 Java 和 Groovy 应用程序的测试和规范框架。它是用Groovy编写的,这使得它成为一种非常富有表现力和切中要害的规范语言。
当您使用 Spock 时,您的测试将变得更具可读性,更易于维护,并且由于其 JUnit 运行器,Spock 与大多数 IDE、构建工具和持续集成服务器兼容。
7. 黄瓜
Ccunumber是自动化集成测试的另一个很好的工具,但它与同一类别中的其他工具的不同之处在于它的规范功能。
Cucumber将规范和测试文档合并为一个有凝聚力的整个生活文档,并且由于它们将由Cucumber自动测试,因此您的规范始终是最新的。
如果你想构建一个从头到尾的Web自动化测试框架,并在Web应用程序上模拟用户行为,那么使用Java和黄瓜BDD的Selenium WebDriver是一个很好的课程,可以在你的项目中学习和实现黄瓜。
8. 弹簧试验
Spring MVC附带了一个非常有用的测试框架,可以进行深入的测试,甚至不涉及Web容器。
它是为Spring应用程序编写自动化测试的最有用的库之一。它为将单元和集成测试写入Spring驱动的应用程序(包括MVC控制器)提供了一流的支持。
还有一个春季测试数据库单元,它将弹簧测试框架与数据库单元集成在一起,还有一个弹簧测试MVC HtmlUnit,它将弹簧测试MVC框架与HtmlUnit集成在一起。
通过使用这些工具,您可以轻松地以自动方式测试您的Spring MVC应用程序。
9. 数据库单位
数据库是许多 Java 应用程序(包括核心 Java 应用程序和 Web 应用程序)不可或缺的一部分,并且可能是进行单元测试时最大的障碍。
连接到 Dev 或 UAT 数据库进行集成测试是不可靠的,因为任何人都可以更改数据和架构,例如表和存储过程,这将导致自动化集成测试失败。
DbUnit 是一个 JUnit 扩展,可用于在每次集成测试之前将数据库初始化为已知状态,以确保数据库包含正确的数据。
DbUnit有自己的问题,但它是一个非常有用的工具,因为它可以帮助我们将测试数据创建与测试代码分开。
10. 机器人框架
机器人框架是基于Python的通用测试自动化框架,用于验收测试和验收测试驱动开发。
它是一个关键字驱动的测试框架,使用表格测试数据语法。您可以使用它来测试分布式异构应用程序,其中验证需要接触多种技术和接口。
结论
这就是面向 Java 开发人员的一些基本单元测试和集成测试工具、框架和库的全部内容。
还有更多我没有包括在这个列表中的库,例如 AssertJ 和 Hamcrest,它们可以帮助你编写漂亮而流畅的测试 - 但要慢慢来。
首先,了解可以在日常工作中使用的工具或库。例如,如果您正在使用Java UI,那么您应该首先学习Selenium,因为这样您就可以更多地关注此工具。
同样,如果您正在研究 REST API,请学习放心。如果你正在做很多核心的Java工作,那么JUnit 5可能是你应该看的第一个库。