springboot 单元测试

前置条件,引入依赖:


            org.springframework.boot
            spring-boot-starter-test
            ${spring-boot.version}
            test
        

1:service 单元测试

springboot 单元测试_第1张图片

选中要单元测试的service,例如UserService/右键/Go To/Test/选择要单元测试的方法,将会自动在test目录创建对应的测试

springboot 单元测试_第2张图片

 增加注解,让测试服务能在springboot启动,

@RunWith(SpringRunner.class)
@SpringBootTest

SpringBoot项目没有@RunWith注解

原因:

SpringBoot2.2 开始没有@RunWith注解。如果想用这个注解的话,需要降低SpringBoot版本到2.2之前。

如果SpringBoot是2.2之后的版本,测试类上只需要@SpringBootTest一个注解就可以了,而且不需要写classpath。

 

2:对Controller进行单元测试

操作方法和对service进行单元测试类似,只是添加注解不同

springboot 单元测试_第3张图片

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() {
    }
}

你可能感兴趣的:(spring,boot,单元测试,java)