一种使用Rest-Assured框架做Spring MVC mock module测试的思路

本文是号称“小能手”的我同事李工在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/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TestNG结合Test-Asserted可以实现强大的接口自动化测试框架,以下是一个简单的代码实现示例: 1. 首先引入TestNG和Test-Asserted的依赖库: ``` <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.3.0</version> </dependency> <dependency> <groupId>com.jayway.restassured</groupId> <artifactId>rest-assured</artifactId> <version>4.3.0</version> </dependency> ``` 2. 创建一个TestNG测试类: ``` import org.testng.annotations.Test; @Test public class ApiTest { } ``` 3. 在测试类中添加测试方法,使用Test-Asserted发送HTTP请求并验证响应: ``` import static com.jayway.restassured.RestAssured.*; import static org.hamcrest.Matchers.*; @Test public void testApi() { given() .param("key", "value") .when() .get("/api/endpoint") .then() .statusCode(200) .body("response", equalTo("expectedValue")); } ``` 在这个示例中,我们使用RestAssured库来发送HTTP请求并验证响应。我们首先使用given()方法指定请求参数,然后使用when()方法发送请求,最后使用then()方法验证响应的状态码和响应体中的值。 4. 运行测试方法: 可以使用IDE或者maven命令来运行测试方法。例如,使用maven命令`mvn test`来运行所有的TestNG测试方法。 这就是一个简单的TestNG结合Test-Asserted实现的接口自动化测试框架示例。当然,实际项目中可能需要更多的配置和优化,但这个示例可以作为一个起点来进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值