本文是号称“小能手”的我同事李工在2018年10月18号发表于公众号“CI智创未来”的一篇文章,特为大家转载分享。
在介绍Rest-Assured框架前,我们需要了解两个知识点:
1)Spring MVC测试框架
2)MockMVC
Spring MVC 测试框架
Spring MVC 测试框架(Spring MVC Test framework)是支持junit的,用于测试客户端/(Spring MVC编码)服务器端的API。它通过TestContext框架加载spring配置文件,DispatcherServlet处理请求。它基本上接近于全量集成测试,但是不需要启动Servlet容器。
Spring MVC测试框架原理是在DispatcherServlet调用controller时,重写controller,用于执行请求和生成响应。
Spring MVC测试基于Servlet API的mock实现,这样处理请求和生成返回信息就不用启动Servlet容器了。除了渲染JSP 页面外,其它功能都可以在Spring MVC框架中被测试,也可以说,所有包含 @ResponseBody 和返回View类型(Freemarker,Velocity, Thymeleaf,jsp)的用于产生HTML、JSON、XML内容的方法,都可以在Spring MVC测试框架下如预期一样工作,并在response中包含生成的内容。
Mock MVC
对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络环境等,所以为了可以对Controller进行测试,我们引入了Mock MVC。
Mock MVC实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。
正文:Rest-Assured介绍
Rest-assured 是一个测试Restful web service的框架,提供了一系列功能像DSL式的语法, XPath-Validate, 文件上传,Specification重用,使用代理, Spring MVC mock module测试Controllers等等,让你在Java里面测试Rest service 和那些动态语言Ruby, Groovy一样灵活。
主要语法:
使用步骤:
1. 增加Dependency:
2. 在JUnit测试中加上对应的引入:
3. 在JUnit测试中启动Mock MVC实现对Http请求的模拟:
4. 测试用例几种示例写法:
参考文献:
Spring MVC 测试框架:https://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#unit-testing-spring-mvc
REST-assured:
http://rest-assured.io/