在上一篇《PowerMock学习之PoweMock的入门(一)》文章中,已经简单提及一些关于powermock的用法,但是入门还未完,我还要坚持把它学习并坚持更新到博客中。
ps:仅更新这次案例中使用的api说明。
接着我再来一个稍稍有点难度的需求,需要创建学生操作。
需要在dao和service加入两个方法如下:
dao中加入:
/** * create student * * @param student */ public void createStudent(Student student) { throw new UnsupportedOperationException(); }
service中加入:
/** * create student * @param student */ public void createStudent(Student student) { studentDao.createStudent(student); }
如果针对createStudent写单元测试,肯定是错误的,很明显数据库资源不存在,上个案例已经说了,这里不做赘述,重点是这次是验证无返回值类型的测试,即void,那该怎么测试呢?
mock后的createStudent方法,实际什么都不会做,仔细想下,我们调用createStudent方法,按照用例测试,也无非就是调用成功或者失败,可先假设调用成功或失败.。
然后,使用mock中verify这个方法即可完成验证,具体示例代码如下:
@Test public void testCreateStudentWithMock() { StudentDao studentDao = PowerMockito.mock(StudentDao.class); Student student=new Student(); PowerMockito.doNothing().when(studentDao).createStudent(student); StudentService studentService = new StudentService(studentDao); studentService.createStudent(student); Mockito.verify(studentDao).createStudent(student); }
再次运行就能够通过,其中Mockito.verify主要用来校验被mock出来的对象中的某个方法是否被调用。
到此关于mock的入门就结束了。
原文:https://www.cnblogs.com/longronglang/p/11894911.html