SpringBoot 添加单元测试
1、添加Maven依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
2、创建一个公共父类,用于规定一些公共配置(在SpringBoot目录中的test包中创建)
@RunWith(SpringRunner.class)
@SpringBootTest
public class BaseControllerTest {
@Autowired
public WebApplicationContext wac;
public MockMvc mvc;
public MockHttpSession session;
public Random random = new Random();
@Before
public void setupMockMvc(){
mvc = MockMvcBuilders.webAppContextSetup(wac).build(); //初始化MockMvc对象
session = new MockHttpSession();
session.setAttribute("user","user"); //拦截器那边会判断用户是否登录,所以这里注入一个用户
}
}
3、在test包右键,设置为测试资源根目录
4、在需要创建单元测试的类上,右键
Superclass
:就是第二步创建的公共测试父类。
Destination package
: 设置了第三步后,IDEA会自动找到对应的测试目录。
Generate
:添加After/Before 方法。
下面的Member
可以把需要进行单元测试的类勾选上,会自动创建方法。
5、创建单元测试方法。(POST、GET)
public class UserControllerTest extends BaseControllerTest {
//此URL对应你的请求地址
private String url = "/user/";
//POST 设置参数
@Test
public void addUserType() {
try {
UserReq req = new UserReq();
req.setUserCode("TestLiTong");
req.setUserName("TestLiTong");
req.setCreateRemark("TestLiTong");
req.setCreateUname("LT");
String requestJson = JSONObject.toJSONString(req);
//在这边的URL对应相应的接口
mvc.perform(MockMvcRequestBuilders.post(url+"add")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.accept(MediaType.APPLICATION_JSON_UTF8)
.content(requestJson)
)
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print());
} catch (Exception e) {
e.printStackTrace();
//出异常就报错
fail();
}
}
//GET 设置参数
@Test
public void get() throws Exception {
try{
//在这边的URL对应相应的接口
mvc.perform(MockMvcRequestBuilders.get(url+"get")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.accept(MediaType.APPLICATION_JSON_UTF8)
.param("id","20")
.param("userCode","TestLiTong")
)
.andExpect(MockMvcResultMatchers.status().isOk())
.andDo(MockMvcResultHandlers.print());
} catch (Exception e) {
e.printStackTrace();
//出异常就报错
fail();
}
}
}