微服务架构和实践SpringBoot极简教程 · Spring Boot Java 杂谈

Spring Boot:单元测试

2018-01-24  本文已影响311人  聪明的奇瑞

单元测试

单元测试注意事项

常用注解

Spring Boot 单元测试

配置相关注解

@SpringBootTest

@LocalServerPort

@ActiveProfiles(profiles = "test")

@Slf4j

private  final Logger logger = LoggerFactory.getLogger(XXX.class); 

@AutoConfigureMockMvc

@WebAppConfiguration

测试例子

测试 REST 接口

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class,webEnvironment = WebEnvironment.RANDOM_PORT)
public class RandomPortExampleTests {

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void exampleTest() {
        String body = this.restTemplate.getForObject("/", String.class);
        assertThat(body).isEqualTo("Hello World");
    }
}

测试 Spring MVC

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@AutoConfigureMockMvc
public class SessionControllerTest {

    @Autowired
    private MockMvc mvc;

    private ObjectMapper objectMapper = new ObjectMapper();

    @Test
    public void testLogin() throws Exception {
        LoginDTO loginDTO = new LoginDTO();
        loginDTO.setUsername("linyuan");
        loginDTO.setPassword("123456");
        byte[] body = objectMapper.writeValueAsBytes(loginDTO);
        String resp = this.mvc.perform(
                post("/session")              //请求的URL
                        .content(body)                   //请求的数据
                        .param("请求的参数名","参数值")          //请求的参数
                        .contentType(MediaType.APPLICATION_JSON)    //请求数据的格式
                        .accept(MediaType.APPLICATION_JSON)         //接收返回数据的格式
        ).andExpect(status().isOk())                     //验证执行结果状态码
         .andDo(print())                                 //请求结果处理,输出请求结果
         .andReturn().getResponse().getContentAsString();       //最后返回的结果,将数据转换为字符串
        System.out.println(resp);
    }

}

----- 持续更新中 -----

上一篇 下一篇

猜你喜欢

热点阅读