zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    用ASP.NET开发三层架构
    关于DataGrid模板列里的Checkbox全选个人总结
    javascript实现日期星期的显示
    在两个ASP.net页面之间传递值
    你有没有成为技术作家的潜力
    关于SharePoint 2007中的InfoPath Form Service的一点小问题
    关于MOSS SDK的Web Content Management
    [MOSS汇编SDK]Web Content Management:自定义页面的工具栏
    关于修改域用户密码的WebPart的问题的问题.
    [MOSS 译]如何:在WEB内容查询部件中使用自定义的字段
  • 原文地址:https://www.cnblogs.com/hankuikui/p/10271579.html
Copyright © 2011-2022 走看看