分享

Top 10 盘点:2019 Java 开发者必学的测试框架、工具和库!

 黄爸爸好 2019-03-12

@Java 开发者,2019 要先学点啥?

有答曰:“学习千万条,自动化测试第一条”。如今,“自动化测试的重要性正在呈指数级增长”,而本文便重点介绍了 10 大出色的测试框架、工具和库,帮助提高你的自动化测试技能!

作者 | javinpaul

译者 | 姜松浩

责编 | 仲培艺

出品 | CSDN(ID:CSDNNews)

以下为译文:

关于 Java 开发人员今年应该学习什么的问题,答案可能包括编程语言、库和框架,但如果你只需要改进或学习一件事,那么这必定是你的自动化测试技能。

测试是将专业开发人员与业余开发人员分开的训练之一。这里说的并不是 TDD、BDD 或任何测试方法,但你至少要可以编写代码来自动测试代码。

许多 Java 开发人员在构建期间,编写自动运行的单元测试和集成测试,主要是使用 Jenkins 或 TeamCity 等持续集成工具。

为什么程序员应该专注于自动化测试?事实上,由于关注度日益提升,更多的 DevOps 开始出现,自动化测试的重要性呈指数级增长。

公司通常更偏爱擅长编写单元测试并且熟悉各种单元测试框架、库和工具的程序员,例如 JUnit、Selenium、REST-Assured、Spock框架等。

作为 Java 开发人员,我们致力于差异非常大的领域,从编写核心 Java 代码到创建 JSP 页面、编写 REST APIs,有时甚至会创建用于构建自动化的 Groovy 脚本。这就是为什么我们还需要了解我们可以用来自动化测试的不同工具。

例如,很长一段时间以来我只知道 JUnit,但是当我不得不测试我的 JSP 页面时,我可谓一头雾水,直到找到了 Selenium。 REST Assured 也是如此,因为我通常使用 curl 命令测试我的 REST API,但是 REST Assured 却可以将 REST API 的单元测试提升到另一个级别。

我相信好的程序员,必定离不开好用的工具,所以我总是在空闲时间尝试学习和探索新的工具和库。在本文中,我将分享 10 大最好且必不可少的工具、框架和库,它们可以帮助 Java 开发者在各种 Java 项目上编写单元测试和集成测试。

JUnit

显然,JUnit 不需要任何介绍。即使你是初学 Java 的程序员,大概率上你也有过耳闻——它允许你为你的 Java 代码编写单元测试。

几乎所有主要的 IDE,例如 Eclipse、NetBeans 和 IntelliJIDEA 都提供了 JUnit 集成,这意味着你可以直接从这些 IDE 上编写和运行单元测试。

我们大多数人仍在使用 JUnit 4,但 JUnit 5 已经发布,可能是今年要关注的下一个东西。你可以用 JUnit 进行单元测试和集成测试,它还支持 Java 8 的特性。

顺便说一下,如果你是单元测试世界的新手,特别是在 Java 单元测试方面,那么 JUnit and Mockito crash course 这个课程会是一个很好的起点。

链接:https://www./junitandmockitocrashcourse/

      

REST Assured

在 Java 中测试和验证 REST 服务比用动态语言(例如 Groovy)更难。

REST Assured 将使用这些语言的简单性带入了 Java 域。它是 REST API 集成测试的绝佳工具。

如果你想了解更多信息,还可以查看 REST API Testing Automation: via REST Assured & HTTP Client 这个课程。

链接:https://www./api-testing-rest-api-automation-testing-from-scratch/

Selenium

Selenium 可能是最流行的 Java UI 测试工具,它允许你测试 JSP 页面而无需在浏览器中启动它们。

你可以使用 JUnit 和 Selenium 测试 Web 应用程序 UI。它甚至允许你编写 Web 应用程序验收测试。

如果你想学习 Selenium,Selenium WebDriver with Java — Basics to the Advanced 这个课程是最好的开始。

链接:https://www./selenium-real-time-examplesinterview-questions/

TestNG

TestNG 是一个受 JUnit 和 NUnit 启发的测试框架,但是却引入了许多新功能,使其功能更加强大,更加易于使用。例如注释、在任意大线程池中运行测试并提供各种策略(所有方法都在自己的线程中,每个测试类一个线程)等等。

由于使用了 JUnit 4 中的注释并集成了 Hamcrest 匹配器,这个测试框架与 JUnit 和 TestNG 之间的差距已经缩小,但是这取决于你的选择。

如果你决定学习 TestNG 来测试你的 Java 代码,那么 TestNG Complete Bootcamp For Beginners — Novice To Ninja 会是一个很好上手的课程。

链接:https://www./testng-complete-bootcamp/

Mockito

Java 类有许多模拟框架,例如 PowerMock 和 JMock。但是我个人喜欢 Mockito,因为它具有简单的 API、很棒的文档还有很多例子。

Mocking(模拟)是现代单元测试的基本技术之一,因为它允许你在没有任何依赖性的情况下单独测试代码,这就是为什么我鼓励每一个 Java 开发人员在 JUnit 之余学一学 Mock 框架。

我最喜欢的模拟框架是 Mockito,但如果你愿意,也可以探索 PowerMock 或 JMock。

如果你也喜欢 Mockito 并决定学习这个框架,那么 Mockito Tutorial: Learn mocking with 25 Junit Examples 是一个很不错的课程。

链接:https://www./mockito-tutorial-with-junit-examples/

Spock Framework

Spock 是 Java 和 Groovy 应用程序的另一个测试和规范框架。它是用 Groovy 编写的,这使其成为一种非常有表现力的点对点规范语言。

当你使用 Spock 时,你的测试将变得更加易读并且更加易于维护,并且由于其利用 JUnit 运行程序,Spock 与大多数 IDE、构建工具和持续集成服务器兼容。

不幸的是,我没有找到 Spock 框架有用的学习课程,但是《Java Testing with Spock》这本书可以算是一个很好的上手资源。

链接:https://www.amazon.com/Java-Testing-Spock-Konstantinos-Kapelonis/dp/1617292532/

Cucumber

Cucumber 是自动化集成测试的另一个很好的工具,但是其与同类别中的其他工具的不同之处就在于它的规范功能。

Cucumber 将规范和测试文档合并为一个连贯完整的活动文档,因为它们将由 Cucumber 自动测试,所以你的规范总是最新的。

如果你想构建一个 Start to Finish Web 自动化测试框架,并在 Web 应用程序上模拟用户行为,那么 Selenium WebDriver with Java & Cucumber BDD 是一个很好的课程,可以帮助你在项目中学习和实现 Cucumber。

链接:https://www./automate-tests-using-selenium-webdriver-with-java-cucumber/

Spring Test

Spring MVC 带有一个非常有用的测试框架,允许在不涉及 Web 容器的情况下进行深入测试。

它是为 Spring 应用程序编写自动化测试的最有用的库之一。它为 Spring 驱动的应用程序(包括 MVC 控制器)编写单元和集成测试提供了一流的支持。

还有一个 Spring Test DbUnit,它集成了 Spring Test 框架和 DbUnit;以及 Spring Test MVC HtmlUnit,集成了 Spring Test MVC 框架和 HtmlUnit。

通过使用这些工具,你可以轻松地以自动方式测试你的 Spring MVC 应用程序。

如果你想了解更多关于如何测试 Spring 应用程序的信息,我建议你看一下 John S Thompson 在 Udemy 上的课程 Testing Spring Boot: Beginner to Guru。

链接:https://www./testing-spring-boot-beginner-to-guru/

DBUnit

数据库是许多 Java 应用程序(核心 Java 应用程序和 Web 应用程序)不可或缺的一部分,这可能是进行单元测试时的最大障碍。

连接到 Dev 或 UAT 数据库进行集成测试是不可靠的,因为任何人都可以更改数据和架构,例如表和存储过程,这将导致你的自动化集成测试失败。

DbUnit 是 JUnit 的一个扩展,可用于在每次集成测试之前将数据库初始化为已知状态,以确保数据库包含正确的数据。

DbUnit 有自己的问题,但它是一个非常有用的工具,因为它可以帮助我们将测试数据的创建与测试代码分开。

Robot Framework

Robot Framework 是一个基于 Python 的通用自动化测试框架,用于验收测试和验收测试驱动开发。

它是一个关键字驱动的测试框架,使用表格测试数据语法。你可以使用它来测试分布式异构应用程序,其中验证需要涉及多种技术和接口。

如果你决定学习这个用于集成测试的出色框架,那么 Udemy 的 Robot Framework Test Automation 是一个很好的上手资源。

这是一个由两部分组成的课程,涵盖了 Robot Framework 的基本和高级功能。

链接:https://www./robot-framework-level-1/

结论

以上,就是对于 Java 开发者而言的一些基本单元测试和集成测试工具、框架和库的全部内容。

很多库我并没有包含在此文中,例如 AssertJ 和 Hamcrest,尽管它们也可以帮助你写出漂亮和流畅的测试,但是要慢慢来。

首先,学习一种可以在日常工作中使用的工具或库。例如,如果你正在使用 Java UI,那么你应该首先学习 Selenium,因为那样你就可以更多地关注这个工具。

同样,如果你正在使用 REST API,那么请学习 REST Assured(参见 REST with Spring);如果你正在做很多核心 Java 工作,那么 JUnit 5 可能是你应该看的第一个库。

最后,祝你的测试旅程顺利!这当然不是一件容易的事情,但如果能遵循本指南和框架,你就离成为一个专业程序员又近了一步。

P.S. 如果你只想从 JUnit 和 Mockito 开始,我认为 JUnit and Mockito crash course 是最好的开始。

原文:https://medium./these-are-the-top-testing-tools-libraries-and-frameworks-for-java-developers-8c0e3f9bc11d

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多