前置条件,引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring-boot.version}</version>
<scope>test</scope>
</dependency>
1:service 单元测试
选中要单元测试的service,例如UserService/右键/Go To/Test/选择要单元测试的方法,将会自动在test目录创建对应的测试
增加注解,让测试服务能在springboot启动,
@RunWith(SpringRunner.class)
@SpringBootTest
SpringBoot项目没有@RunWith注解
原因:
SpringBoot2.2 开始没有@RunWith注解。如果想用这个注解的话,需要降低SpringBoot版本到2.2之前。
如果SpringBoot是2.2之后的版本,测试类上只需要@SpringBootTest一个注解就可以了,而且不需要写classpath。
2:对Controller进行单元测试
操作方法和对service进行单元测试类似,只是添加注解不同
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import javax.annotation.Resource;
/**
* @author lym
* @date 2022/12/19
*/
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@Slf4j
class UserControllerTest{
@Resource
protected MockMvc mockMvc;
@Test
void info() {
MvcResult mvcResult = null;
// UserInfoDto userInfoDto = new UserInfoDto();
// userInfoDto.setMobile("18621969421");
try {
mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/user/info")
.accept(MediaType.APPLICATION_JSON)
// .content(JSONUtil.toJsonStr(userInfoDto))) //传递json
.param("mobile", "186xxxx9421"))
.andDo(MockMvcResultHandlers.print())
.andReturn();
log.info(mvcResult.getResponse().getContentAsString());
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
void deleteCache() {
}
@Test
void getQywxUserInfoUrl() {
}
@Test
void buyRecord() {
}
}