首页 课程 师资 教程 报名

Java 开发者必备测试框架

  • 2019-08-26 10:37:54
  • 2671次 动力节点

  测试是一门能够区分专业开发人员与业余开发人员的重要学科。这不在于你掌握TDD、BDD或者其他一些测试方法,而是在最基础的层面,你是否能够编写测试代码来进行自动化测试。


  许多Java开发人员都会编写单元测试和集成测试代码,这些测试代码在构建时自动运行。开发者主要借助一些持续集成工具来编写测试代码,比如Jenkins或者TeamCity。


  你是否对此充满疑虑:为什么程序员应该关注自动化测试?事实上,随着DevOps的出现和普及,自动化测试的重要性正在呈指数增长。


  公司通常更喜欢那些擅长编写单元测试的程序员,如果程序员还熟悉各种单元测试框架、库和工具那就更好了。比如JUnit、Selenium、REST-Assured、Spock框架等。


  作为一名Java开发者,我们需要从事各种截然不同的工作。比如,编写核心Java代码、创建JSP页面、编写RESTAPI、甚至编写Groovy脚本用于自动化构建。我们还需要了解不同的工具来进行自动化测试。


  例如,之前很长的一段时间我只知道JUnit。后来我不得不测试JSP页面,当我了解了Selenium之后顿时豁然开朗。RESTAssured也一样,我通常使用curl指令测试我的RESTAPI,它将RESTAPI的单元测试提升到了一个新的级别。


  我认为一名优秀的程序员需要学会使用和利用工具,因此我经常利用空闲时间学习和探索各种新的工具和库,本文将展示一部分我所熟知的工具。


  在本文中,小编将分享10个最好的工具、框架和库,以帮助Java开发人员在不同的Java项目中更好地执行单元测试和集成测试。


  ▌JUnit


  JUnit应该不需要过多介绍。哪怕你是一位Java初学者,我想你也应该听说过它,它能够让你为Java代码编写单元测试。


  几乎所有常用的IDE,比如Eclipse、NetBeans和IntelliJ,都能够集成JUnit,这意味着开发者直接可以在这些IDE中编写并运行单元测试。


  目前大多数人仍然在使用JUnit4,事实上新的JUnit5已经发布。你可以用JUnit进行单元测试和集成测试,此外,它还支持Java8功能。

image.png

  ▌RESTAssured


  相比于Groovy这类动态语言,在Java中测试和验证REST服务更难。


  RESTAssured为Java带来了这些语言的简单性。这对于RESTAPI集成测试来说是一个很好的工具。

image.png

  ▌Selenium


  Selenium应该是最受欢迎的JavaUI测试工具,有了它,你不需要在浏览器中启动JSP页面即可对其进行测试。


  你可以使用JUnit和Selenium来测试Web应用程序UI。还可以使用它进行Web应用程序验收测试。

image.png

  ▌TestNG


  TestNG这款测试框架最早源于JUnit和NUnit的启发,但它在这两者的基础上引入了许多新的功能,其功能更强大,也更易于使用,提供了注解功能,支持在任意大型线程池中运行各种可用策略的测试(所有方法都在自己的线程中,每个测试类对应一个线程)。


  随着JUnit4中注解功能的引入以及Hamcrest框架的整合,JUnit4和TestNG之间的差距已经很小。

image.png

  ▌Mockito


  Java有许多Mock框架,例如PowerMock和JMock,但我个人更喜欢Mockito,它具有简单的API、优秀的文档以及大量示例。


  Mock测试是现代单元测试的关键技术之一,开发者不需要依赖其他情况也可独立测试代码,因此我建议每个Java开发人员都应该学习Mock框架来与JUnit结合使用。


  我个人最喜欢的Mock框架是Mockito,如果你喜欢的话,也可以了解一下PowerMock或者JMock。


  ▌Spock框架


  Spock是一款用于Java和Groovy应用程序的测试和规范框架。它用Groovy编写,因此它具有很强的表现力,并且非常规范。


  使用Spock时,测试将变得更加易读易维护。此外,得益于它的JUnit运行器,Spock能够兼容大多数IDE、构建工具和持续集成服务器。


  不过遗憾的是,线上讲述Spock框架的课程好像不多,“使用Spock进行Java测试”这本书倒是一个不错的学习资源。

image.png

  ▌Cucumber


  Cucumber是一款很好的自动化集成测试工具,与其他同类工具相比,它的规范功能是一大特色。


  Cucumber将规范和测试文档合并为一个文档,由于文档也会被Cucumber自动测试,因此规范文档始终会被更新为最新版本。

image.png

  ▌Spring测试


  SpringMVC自带了一个非常有用的测试框架,可以在不涉及Web容器的情况下进行深入测试。


  这个是一个非常有用的库,可以为Spring应用程序编写自动化测试。它为Spring应用程序(包括MVC控制器)编写单元和集成测试提供了强有力的支持。


  还有一个SpringTestDbUnit,它将Spring测试框架与DbUnit以及HtmlUnit集成在了一起。


  使用这些工具,你可以轻松完成SpringMVC应用程序的自动化测试。


  ▌DBUnit


  对于大多数的Java应用程序,不管是核心Java程序还是JavaWeb应用,数据库都是其不可或缺的重要组成部分,并且数据库还很可能是单元测试的最大障碍。


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


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


  DbUnit是一个非常有用的工具,它可以帮助我们将测试数据和测试代码分开。

image.png

  ▌Robot框架


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


  它采用表格测试数据语法,是一个关键字驱动的测试框架。分布式异构应用程序的验证往往需要多种技术和接口,非常适合用Robot来测试。

image.png

  ▌总结


  以上就是本文介绍的所有针对    的单元测试以及集成测试的工具、框架和库。


  还有更多的库并没有包含在这个列表中,例如AssertJ和Hamcrest,它们可以帮助你写出漂亮且流畅的测试程序。


  面对如此多的工具,你应当先学习那些与你日常工作最相关的。例如,如果你的工作主要涉及JavaUI,那么你应该最先学习Selenium,然后再学习其他工具来扩展和提升自己。


  类似的,如果你正在使用RESTAPI,那么最好先学习RESTAssured。如果你主要从事核心Java工作,那么你最先学习的应该是JUnit5。


选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交