MockMvc,RestAssured和TestRestTemplate有什么区别?

时间:2018-08-28 06:39:11

标签: java spring-boot rest-assured spring-boot-test mockmvc

据我所知,MockMvc只是测试控制器,并模拟服务层。

RestAssured和TestRestTemplate正在测试我们API的运行实例。

对吗? RestAssured和Spring Boot的TestRestTemplate有什么区别?

3 个答案:

答案 0 :(得分:2)

MockMvcspring-test中的类之一。这主要用于控制器层的单元测试。不只是您的控制器类。这是用于发送控制器层的信号。但是您必须模拟服务和其他层。因此,它主要用于单元测试。

正如文档所述,

TestRestTemplate也是弹簧测试的一部分,

  

{@ link RestTemplate}的便捷替代品,适用于   集成测试。

这可用于测试您的Rest Service /端点。主要区别之一是您将MockMvc用于单元测试,将TestRestTemplate用于集成测试。换句话说,使用MockMvc不需要服务器的运行实例,但是需要TestRestTemplate。

RestAssured是一个完全不同的框架。这与Spring无关。这是一个图书馆,它提供了多种方法来使用流畅的BDD样式界面来测试任何REST服务。

答案 1 :(得分:1)

如前所述,MockMvc用于模拟服务层。在代码的unit-testing中很有用。

RestAssured和TestRestTemplate都用于integration-testing,这是端到端API测试。

此外,RestAssured和Spring Boot的TestRestTemplate之间没有太大区别。您可以将RestAssured用于Spring-Boot应用程序,也可以继续使用Spring库的TestRestTemplate。

答案 2 :(得分:0)

MockMvc 主要用于Web层测试。网络层测试实质上是编写专门用于测试应用程序控制器的细粒度测试。这与为需要模拟依赖项来测试特定方法的类编写常规单元测试非常相似。

就比较 RestAssured与TestRestTemplate 而言,它们所做的几乎是同一件事。在基于RESTful的API集成测试和验证方面,TestRestTemplate和RestAssured都提供了便捷的方法来创建和执行带有自定义标头,身份验证,内容类型,查询参数,有效载荷内容,Cookie等的HTTP调用。从语法上来说-TestRestTemplate是Spring测试框架的一部分,该框架捆绑了spring-boot-starter-test依赖项。

请查看这篇文章Testing Spring Boot RESTful APIs using MockMvc/Mockito, Test RestTemplate and RestAssured-它具有关于这三种(MockMvc,TestRestTemplate和RestAssured)的用法的附加说明和可靠的示例。