Dim*_*Zio 2 testing spring spring-test resttemplate spring-boot
有人知道为什么 Spring Boot Guide 包含两种不同类型的集成测试吗?(https://github.com/spring-guides/gs-spring-boot#add-unit-tests)
一个与 TestRestTemplate 和一个与 MockMvc 依赖?在每个测试类型中,spring boot 引导测试环境。那么这种分离的原因是什么呢?
当您使用时,MockMvc您正在测试一个已模拟 HTTP 请求周期的应用程序实例。因此,这里的测试范围只是应用程序的 MVC 方面。我认为这通常不会被标记为“集成测试”,而是更接近于单元测试(尽管它的范围比单个类大得多)。
当您使用时,TestRestTemplate您正在测试您的应用程序的真实实例,即您正在“涌现”整个应用程序上下文并将其作为外部参与者调用。这通常称为“集成测试”,它可能是最接近您实际使用情况的测试。
现在,由于通过调用的“全栈”集成测试TestRestTemplate可以提供测试提供的覆盖范围的超集,MockMVC您可能想知道为什么要费心进行MockMVC测试。如果是这样,那么我认为这是一个...
测试范围;MockMVC测试用例通常比完整的集成测试更快更容易启动(因为它们使用更少的应用程序上下文)。此外,由于它们使用较少的应用程序上下文,您可能不必努力模拟真实应用程序上下文中在测试中表现不佳的任何方面。
便于使用; MockMVC带有用于断言 HTTP 状态、询问和断言 JSON 响应等的静态助手。当然 YMMMV 但对许多人来说,这些有助于简化开发并帮助提供可读的测试用例。
在实践中,您可能希望结合使用这两种方法:
MockMVC 用于详细测试整个控制器层的测试,包括所有映射、所有调用的快乐和悲伤路径以及对 HTTP 状态代码、内容主体等的深度断言TestRestTemplate从用户的角度来看如表达的主要流量测试Save a new Foo,Search for all Foos,Submit an invalid Foo update等有断言侧重于哪些用户看到比特/有感兴趣的内容。| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |