spring boot 单元测试

这里的单元测试指的是对webapi的测试,严格来说应该是集成测试,只不过用的是单元测试的方法。

通过使用MockMvcRequestBuilders模拟http的请求,访问controller:

具体方法如下:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MedicareApplicationTests {

    @Autowired
    private WebApplicationContext wac;

    private MockMvc mvc;

    @Before
    public void setupMockMvc() {
        mvc = MockMvcBuilders.webAppContextSetup(wac).build();

    }
    @Test
    public void getOpinionTaskHospitalsTest() throws Exception {

        mvc.perform(MockMvcRequestBuilders.post("/taskmgr/GetTasks")
                .contentType(MediaType.APPLICATION_JSON_UTF8)
                .header("token","eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJzdHJpbmcifQ.ylDXcyPnihJ1F1vUs8c3OnUwMxddotoJn6dXXNICphA")
                .accept(MediaType.APPLICATION_JSON_UTF8)
                .param("month","2015-07-01 00:00:00"))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andExpect(MockMvcResultMatchers.jsonPath("$.status").value(200))
                .andDo(MockMvcResultHandlers.print());

    }
}

由于webapi采用的是jwt的认证方式 ,所以这里添加了tokein的header.

这里使用的是查询的操作,没有脏数据的问题,如果是插入和更新的操作,可以在方法上添加@Transactional注解,解决脏数据的问题。

如果只想针对controller层或service做单元测试,也是可以的,只需要mock service或dao层然后在方法中添加 when().then()。

如果采用mybatis数据层,可以采用@MybatisTest对数据层进行单元 测试。

添加gav

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter-test</artifactId>
    <version>1.3.2</version>
</dependency>

如下mapper文件如下:

@Mapper
public interface CityMapper {

    @Select("SELECT * FROM CITY WHERE state = #{state}")
    City findByState(@Param("state") String state);

}

测试类如下:

@RunWith(SpringRunner.class)
@MybatisTest
public class CityMapperTest {

    @Autowired
    private CityMapper cityMapper;

    @Test
    public void findByStateTest() {
        City city = cityMapper.findByState("CA");
        assertThat(city.getName()).isEqualTo("San Francisco");
        assertThat(city.getState()).isEqualTo("CA");
        assertThat(city.getCountry()).isEqualTo("US");
    }

}

参考:http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-test-autoconfigure/

原文地址:https://www.cnblogs.com/hankuikui/p/10271579.html