集成测试中MockMvc和RestTemplate之间的区别
无论MockMvc和RestTemplate用于与Spring和JUnit集成测试。
问题是:它们之间有什么区别,何时应该选择一个?
这只是两个选项的示例:
//MockMVC examplemockMvc.perform(get("/api/users"))
.andExpect(status().isOk())
(...)
//RestTemplate example
ResponseEntity<User> entity = restTemplate.exchange("/api/users",
HttpMethod.GET,
new HttpEntity<String>(...),
User.class);
assertEquals(HttpStatus.OK, entity.getStatusCode());
回答:
正如在说这个 文章你应该使用MockMvc
当你想测试 应用程序:
Spring MVC Test建立在模拟请求和响应的基础上,
spring-test
不需要运行中的servlet容器。主要区别在于,实际的SpringMVC配置是通过TestContext框架加载的,而请求是通过实际调用
DispatcherServlet
运行时使用的以及所有相同的SpringMVC基础结构来执行的。
例如:
@RunWith(SpringJUnit4ClassRunner.class)@WebAppConfiguration
@ContextConfiguration("servlet-context.xml")
public class SampleTests {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc = webAppContextSetup(this.wac).build();
}
@Test
public void getFoo() throws Exception {
this.mockMvc.perform(get("/foo").accept("application/json"))
.andExpect(status().isOk())
.andExpect(content().mimeType("application/json"))
.andExpect(jsonPath("$.name").value("Lee"));
}}
而且RestTemplate
你应该使用当你想测试 应用程序:
如果您使用编写代码
RestTemplate
,则可能需要对其进行测试,并且可以将其定位为正在运行的服务器或模拟RestTemplate。客户端REST测试支持提供了第三种选择,即使用实际值,RestTemplate
但使用自定义配置它,以ClientHttpRequestFactory
根据实际请求检查期望并返回存根响应。
例:
RestTemplate restTemplate = new RestTemplate();MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
mockServer.expect(requestTo("/greeting"))
.andRespond(withSuccess("Hello world", "text/plain"));
// use RestTemplate ...
mockServer.verify();
也读这个例子
以上是 集成测试中MockMvc和RestTemplate之间的区别 的全部内容, 来源链接: utcz.com/qa/422129.html