spring-boot单元测试

本文仅适用spring-boot 1.4版本以后的写法,至于1.4以前的版本,还是建议升级到1.4:)

如果仅仅是直接调用接口函数进行测试的话,非常简单增加。在测试类增加一些注解就好了。利用@Autowired也能将接口给注解进来。

1
2
3
4
5
6
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApiTest {
@Autowired
MessageApi messageApi;
...

同时spring-boot-test也直接支持mockmvc。如果测试controller的话会用得到,像下面这样就就好了

1
2
3
4
5
6
7
8
9
10
11
12
13
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class ControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testControllerMethods() {
MvcResult result = mockMvc.perform(get("/get-receive-message-abstracts").param("siteId", "webtrn").param("uid", "lucy")
.param("limit", "100")).andExpect(status().isOk())
.andExpect(jsonPath("$", hasSize(10))).andExpect(jsonPath("$[9].title", is("hello0"))).andReturn();
}

其中MockMvc可以模拟http对于controller的请求主要用到的函数在我的测试用例里面都列出来了。大家开发的时候直接看javadoc就好了。

一个java web程序员,希望自己两年之内能成为data scientist,正在找工作