SpringBoot+MyBatis框架的项目单元测试+集成测试(上)

单元测试

    这是我的项目目录结构: 其中,所有的SQL操作都在mapper.xml中 单元测试 采用了Mockito verify方法: 验证方法执行过几次: verify(tBookController, times(1)).queryTBookByName(captor.capture()); 如上代码所示,验证了tBookController的queryTBookByName方法执行了一次,其中captor是用来捕获传入参数的: ArgumentCaptor<String> captor=ArgumentCaptor.forClass(String.class);。 never() 没有被调用,相当于times(0) atLeast(N) 至少被调用N次 atLeastOnce() 相当于atLeast(1) atMost(N) 最多被调用N次 2. 超时验证 verify(mock, timeout(100)).someMethod(); when假设测试条件: String name = "c++"; List<TBook> result = new ArrayList<TBook>(); for(int i = 0; i < 2; i++){ TBook tb = new TBook(); tb.setBkId(i); tb.setBkName("Spring in action"+i); tb.setBkIsbn("123"+i); tb.setBkPage(100+i); tb.setBkState(i); result.add(tb); } //when是为了假设一个场景 when(tBookController.queryTBookByName(name)).thenReturn(result); 然后通过执行测试方法进行验证: List<TBook> tbooks = tBookController.queryTBookByName(name); tbooks = tBookController.queryTBookByName(name); tbooks = tBookController.queryTBookByName(name); ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class); verify(tBookController, times(3)).queryTBookByName(captor.capture()); //getValue()得到捕获参数的最近一次赋值, getAllValues()得到所有参数 assertEquals(name, captor.getValue()); assertThat(tbooks, is(result)); 测试类的注解和自动注入 @RunWith(MockitoJUnitRunner.class) public class MybatisOpTest { @Mock private TBookController tBookController = new TBookController(); @Autowired private TBookMapper tBookMapper;
经验分享 程序员 微信小程序 职场和发展