据我所知,MockMvc 只是测试控制器,并模拟服务层。
RestAssured 和 TestRestTemplate 正在测试我们 API 的运行实例。
这是正确的吗? RestAssured 和 Spring Boot 的 TestRestTemplate 有什么区别?
如前所述,MockMvc 用于模拟服务层。它在代码的
unit-testing
中很有用。
RestAssured 和 TestRestTemplate 都用于
integration-testing
,这是端到端 API 测试。
而且,RestAssured 和 Spring Boot 的 TestRestTemplate 没有太大区别。您可以将 RestAssured 用于 Spring-Boot 应用程序,或者可以继续使用 TestRestTemplate,它是一个 Spring 库。
MockMvc
是 spring-test
中的课程之一。这主要用于控制器层的单元测试。不仅仅是你的控制器类。这是为了测试控制器层。但你必须模拟服务和其他层。因此它主要用于单元测试。
TestRestTemplate
再次成为 Spring 测试的一部分,正如文档所述,
{@link RestTemplate} 的便捷替代方案,适用于 集成测试。
这可用于测试您的 Rest 服务/端点。主要区别之一是您使用 MockMvc 进行单元测试,使用 TestRestTemplate 进行集成测试。换句话说,对于使用 MockMvc,您不需要正在运行的服务器实例,但对于 TestRestTemplate,您需要。
RestAssured
是一个完全不同的框架。这与春天无关。这是一个库,它提供了各种方法来测试具有流畅的 BDD 风格界面的任何 REST 服务。
MockMvc主要用于Web层测试。 Web 层测试本质上是编写专门用于测试应用程序控制器的细粒度测试。这与为类编写常规单元测试非常相似,您需要模拟依赖项来测试特定方法。
就比较 RestAssured 与 TestRestTemplate 而言,它们做的事情几乎相同。当涉及基于 RESTful 的 API 集成测试和验证时,TestRestTemplate 和 RestAssured 都提供了方便的方法来创建和执行具有自定义标头、身份验证、内容类型、查询参数、有效负载内容、cookie 等的 HTTP 调用。主要区别 -aside从语法来看,TestRestTemplate 是 Spring 测试框架的一部分,它与
spring-boot-starter-test
依赖项捆绑在一起。
查看这篇文章 - 使用 MockMvc/Mockito、Test RestTemplate 和 RestAssured 测试 Spring Boot RESTful API - 它对这三个(MockMvc、TestRestTemplate 和 RestAssured)的用法提供了额外的解释和可靠的示例。