MockMvc,RestAssured和TestRestTemplate有什么区别?

Sil*_*lly 5 java rest-assured spring-boot mockmvc spring-boot-test

就我所知,MockMvc只是测试Controller,并模拟Service层。

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

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

Top*_*Pug 7

模拟Mvc主要用于Web层测试。Web 层测试本质上是编写专门设计用于测试您的 app\xe2\x80\x99s 控制器的细粒度测试。它与为类编写常规单元测试非常相似,您需要模拟依赖项来测试特定方法。

\n\n

就比较RestAssured 和 TestRestTemplate而言,它们做的事情几乎相同。当涉及基于 RESTful 的 API 集成测试和验证时,TestRestTemplate 和 RestAssured 都提供了方便的方法来创建和执行具有自定义标头、身份验证、内容类型、查询参数、有效负载内容、cookie 等的 HTTP 调用。主要区别 -aside从语法来看,TestRestTemplate 是 Spring\xe2\x80\x99s 测试框架的一部分,它与spring-boot-starter-test依赖项捆绑在一起。

\n\n

查看这篇文章 -使用 MockMvc/Mockito、Test RestTemplate 和 RestAssured 测试 Spring Boot RESTful API - 它对这三个(MockMvc、TestRestTemplate 和 RestAssured)的用法提供了额外的解释和可靠的示例。

\n


Yug*_*ngh 5

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

而 RestAssured 和 TestRestTemplate 都用于integration-testing端到端 API 测试。

另外,RestAssured 和 Spring Boot 的 TestRestTemplate 没有太大区别。您可以将 RestAssured 用于 Spring-Boot 应用程序,也可以继续使用 TestRestTemplate 这是一个 Spring 库。


pvp*_*ran 5

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

TestRestTemplate 正如文档所述,这又是弹簧测试的一部分,

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

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

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