最近我写了一些文章,关于 JAVA 程序员今年应该学习什么,例如编程语言,库和框架等,如果只能学习或提高其中一项,那必然是自动化测试技能 。
测试是专业程序员区别于业余程序员的一项指标,作为专业程序员,并非必须采用 TDD,BDD 或其它测试方法论,但最低标准是通过编写代码的方式,来自动化测试自己的代码 。
许多 Java 程序员编写单元测试和集成测试,使用 Jenkins、TeamCity 等持续集成工具,在构建阶段自动运行 。
如果还有人对程序员是否应该关注自动化测试存有疑问,那么让我来回答,随着 DevOps 理念的增强和角色的涌现,自动化测试的重要性正在呈指数型增长 。
企业通常青睐那种擅长编写单元测试的程序员,这些程序员对各种单元测试框架、库和工具有着丰富的知识,比如 JUnit,Selenium,REST-Assured,Spock 框架等 。
作为 Java 程序员,我们在截然不同的领域工作,从编写 Java 核心代码到 JSP 页面,REST API,甚至有时为了构建自动化而去编写 Groovy 脚本,这就要求我们必需了解不同的自动化测试工具 。
举一个例子,很长一段时间内,我只了解 JUnit,但当不得不测试 JSP 页面时,我却束手无策,直到我找到了 Selenium 。REST Assured 是另一个类似的例子,我通常使用 curl 命令测试 REST API,但 REST Assured 将 REST API 的单元测试水平提升到了另一个层次 。
Java 程序员需要用到十大单元测试和自动化集成测试工具
我认为一个优秀的程序员,必然能够很好地利用手头上的工具,因此我总在业余时间学习和探索新的工具和库,以下列表是我部分研究成果 。
在这篇文章中,我将分享 10 个最为优秀且必不可少的工具,框架和库,这些可以帮助 java 程序员在各类 java 项目中编写单元测试和集成测试 。
JUnit
JUnit 无须赘述,即便是初级Java程序员,可能也已经听说过它,你可以使用它编写 Java 代码的单元测试 。
几乎所有主流 IDE,例如 Eclipse,NetBeans 和 IntelliJ,都集成了 JUnit,可以直接在这些IDE中编写和运行单元测试 。
大多数人仍在使用 JUnit 4,即使 JUnit 5 已经发布,它很可能是今年下一个热点 。通过 JUnit 5,可以将 JUnit 同时应用于单元测试和集成测试,并且它还支持 Java 8 的特性 。
文章插图
REST Assured
用 Java 语言测试和验证 REST 服务,要难于 Groovy 这类动态语言 。
REST Assured 将这类语言的易用性带入了 Java 领域,是一个优秀的 REST API 的集成测试工具 。
文章插图
Selenium
Selenium 很可能是最流行的 Java UI 测试工具了,它可以让你在不必启动浏览器的情况下测试 JSP 页面 。
你可以使用 JUnit 和 Selenium 来测试 Web 程序的界面,它甚至允许你编写 Web 应用程序的验收测试 。
文章插图
TestNG
TestNG 是一个测试框架,其灵感来自 JUnit 和 NUnit,但同时引入了一些新的功能,使其功能更强大,使用更方便 。例如可以使用注解,在任意大的线程池中,配置各种可用策略进行测试(例如所有方法都在自己的线程中,每一个测试类使用一个线程等) 。
因为 TestNG 使用 JUnit 4 的注解,同时又集成了 HAMCSTREST 匹配器,它与 JUnit 的差异已经减小了,但两者如何选择,这取决于你 。
文章插图
【Java 程序员需要用到 10 个测试框架和库】
Mockito
Java 类有许多 Mock 框架,例如 PowerMock 和 JMock,但我个人偏向于 Mockito,因为它有简单的 API,优秀的文档以及大量的示例 。
Mocking 是现代单元测试的一项关键技术,因为它允许你在没有任何依赖的情况下独立测试代码,这就是为什么我鼓励每个 Java 程序员在学习 JUnit 的同时,一起学习 Mocking 框架的原因 。
我最喜欢的 mocking 框架是 Mockito,但如果你愿意,也可以研究下 PowerMock 或 JMock 。
Spock框架
Spock 是另一个测试和规范框架,用于 Java 和 Groovy 应用程序 。由于使用 Groovy 编写,Spock 成为一种兼具丰富表现力且简明扼要的规范语言 。
当你使用 Spock 时,你的测试将变得更容易阅读和维护,这得益于它采用的 JUnit 运行器,Spock 兼容大部分 IDE,构建工具和持续集成服务器 。
推荐阅读
- PHP和JAVA 几个微信开发框架平台推荐
- 在天猫开店需要什么条件与费用 天猫开店资质要求
- 炒腊肠要先把腊肠蒸熟嘛,蒸腊肠需要多长时间
- 淘宝开个人店铺需要营业执照吗 淘宝开店铺需要营业执照吗
- 奶昔是酸奶还是纯奶,做奶昔需要加水吗
- 人一生中最需要补钙的两个时期!你错过了吗?
- 肾结晶需要治疗吗
- 生蚝清蒸需要去内脏吗
- Java基础之数组
- 一文带你了解 JavaScript 函数式编程