【转】Java学习---10个测试框架介绍
【原文】https://www.toutiao.com/i6594302925458113027/
JAVA 程序员需要用到 10 个测试框架和库
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 的差异已经减小了,但两者如何选择,这取决于你。
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,构建工具和持续集成服务器。
可惜我没有找到有助于学习 Spock 框架的课程,但阅读《Java Testing with Spock》这本书是很好的开始。
Cucumber
Cucumber 是另一个重要的自动化集成测试工具,但与其它同类别的工具不同的是它能够针对规格文档进行自动化测试。
Cucumber 将规格文档和测试文档合成整个动态文档,同时 Cucumber 自动测试这个文档,使测试规范始终保持在最新版本。
Spring Test
Spring MVC 自带一个很有用的测试框架,它可以在不引入 Web 容器的情况下进行深入测试。
Spring Test 是为 Spring 程序编写自动化测试的最有用的库之一。为了给 Spring 驱动的应用程序(包括 MVC 控制器在内),编写单元测试和集成测试,Spring Test 提供了一流的支持。
另外,Spring Test DbUnit 集成了 Spring Test 框架与 DbUnit;Spring Test MVC HtmlUnit 集成了Spring Test MVC 框架和 HtmlUnit。
通过使用这些工具,你可以轻松地自动测试 Spring MVC 应用程序。
DBUnit
数据库是许多 Java 应用程序,包括核心 Java 和 Web 应用程序中不可或缺的部分,也有可能是单元测试的最大障碍。
在进行集成测试时,连接开发环境或用户验收测试的数据库并不可靠,因为任何人都可以更改数据模式和数据本身,例如表和存储过程等,这会导致自动化集成测试失败。
DbUnit 是一个 JUnit 扩展,每次集成测试前,将数据库初始化成已知状态,确保数据库存储正确的数据。
DbUnit 自身还存在着一些问题,但它是一个非常有用的工具,因为它可以帮助我们分离测试数据与测试代码。
Robot 框架
Robot 框架是一个基于 Python 的通用测试自动化框架,用于验收测试和验收测试驱动开发。
它是一个由关键字驱动的,使用表格测试数据语法的测试框架,可以用来测试那些涉及多种技术和接口的分布式异构应用。
如果你打算学习这个优秀的集成测试框架,那么你可以从 Udemy 上的《Robot 框架测试自动化》的课程开始,这是一个很好的学习资源。
该课程涵盖了两部分内容,Robot 框架基础和高级特性。
结论
以上列举了Java 程序员需要用到的单元测试和集成测试工具,框架和库。
还有很多库没有包括在这个列表中,例如 AssertJ 和 Hamcrest,它们可以帮助你写出漂亮且流畅的测试,但学习需要一步步来。
首先,学习一个可以应用于日常工作的工具或库。 例如,如果你正在使用 Java UI,那么首先应该学习 Selenium,这样你可以有更多时间专注在这个工具上。
同样的,如果你的工作内容是 REST API,请学习 REST Assured(参阅 REST with Spring);如果你正在做很多核心 Java 的工作,那么 JUnit 5 可能是你首先需要关注的库。
【转】Java学习---10个测试框架介绍的更多相关文章
- Mockito:一个强大的用于Java开发的模拟测试框架
https://blog.csdn.net/zhoudaxia/article/details/33056093 介绍 本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用 ...
- python pytest测试框架介绍二
在介绍一中简单介绍了pytest的安装和简单使用,接下来我们就要实际了解pytest了 一.pytest的用例发现规则 pytest可以在不同的函数.包中发现用例,发现的规则如下 文件名以test_开 ...
- spring boot应用测试框架介绍
一.spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit.spring test.assertj.hamcres ...
- 网上的JAVA语言的某个测试框架
https://github.com/wenchengyao/testLJTT.git 使用maven打包,mvn clean install 在运行的时候,java -jar testLJTT.ja ...
- 【Tavern】1.tavern测试框架介绍
目录 1. Tavern 和 Postman 2. 安装Python 3. 安装Tavern 4. 第一个测试用例 1. Tavern 和 Postman Tavern是一个用Python实现的接口自 ...
- 『德不孤』Pytest框架 — 1、Pytest测试框架介绍
目录 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5.Pytest框架和Unittest框架区别 (1)Unittes ...
- 【pytest系列】- pytest测试框架介绍与运行
如果想从头学起pytest,可以去看看这个系列的文章! https://www.cnblogs.com/miki-peng/category/1960108.html 前言 目前有两种纯测试的测 ...
- python自动化测试学习笔记-9测试框架
学习了这么久的python,我们已经可以自己搭建一个简单的测试和框架了,先从简单的开始,有时我们编写接口的测试用例会用excel进行编写,以下面的接口测试用例模板为例,进行编写:
- python pytest测试框架介绍三
之前介绍了pytest以xUnit形式来写用例,下面来介绍pytest特有的方式来写用例 1.pytest fixture实例1 代码如下 from __future__ import print_f ...
随机推荐
- 测试JavaScript数组Array
<script> var numbers = [1, 2, 3, 4, 5]; function isLessThan3(value,index,array) { var returnVa ...
- TensorFlow-实战Google深度学习框架 笔记(上)
TensorFlow TensorFlow 是一种采用数据流图(data flow graphs),用于数值计算的开源软件库.在 Tensorflow 中,所有不同的变量和运算都是储存在计算图,所以在 ...
- Python之pymysql的使用
在python3.x中,可以使用pymysql来MySQL数据库的连接,并实现数据库的各种操作,本次博客主要介绍了pymysql的安装和使用方法. PyMySQL的安装 一..windows上的安装方 ...
- C# 字符串首字符大写
我找到一些把字符串首字符大写的方法. 假如需要把字符串 "red" 转换为 "Red",把 "red house" 转为 "Red ...
- OpenGL学习笔记:Console工程下如何不显示控制台黑窗口只显示Windows窗口
刚学习OpenGL,绘制图形的时候,如果不进行设置,运行的时候会先出现黑窗口再出现Windows窗口. 其实要去除控制台窗口非常简单,只需要修改工程设置,把子系统改成Windows,程序的入口点改成m ...
- 关于.net程序集引用不匹配的问题
今天启动asp.net mvc 程序,其中也用到了web api ,autofac等,为了版本兼容性问题,将mvc和 web api 的版本控制到5.2.0.0,Newtonsoft.Json 的版本 ...
- Docker创建运行多个mysql容器
1.使用mysql/mysql-server:latest镜像快速启动一个Mysql实例 docker run --name ilink_user_01 -e MYSQL_ROOT_PASSWORD= ...
- 【JVM】4、JVM类加载机制
一.先看看编写出的代码的执行过程: 二.研究类加载机制的意义 从上图可以看出,类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类 ...
- CentOS总结归纳之基本操作(linux系管与运维一)
原创作品,转载请在文章明显位置注明出处:https://www.cnblogs.com/sunshine5683/p/10170009.html 使用命令关闭和重启系统: 一.条件:只有root用户才 ...
- Android-消息处理学习总结(Handler,Looper)
参考资料: http://www.cnblogs.com/qlky/p/5657924.html http://blog.csdn.net/guolin_blog/article/details/99 ...