java环境下使用Mockito进行单元测试
1. @Mock与@InjectMocks的作用
@Mock:创建一个Mock
@InjectMocks:创建一个实例(被测试类的实例,一般只用一次该注解)
在单元测试某个类的时候,需要标注@InjectMocks,该类的变量需要添加注解@Mock,当需要用到被测试类中变量下的变量时,需要通过Mockito.when(method).thenReturn()进行初始化
ps:必须使用@RunWith(MockitoJUnitRunner.class)或MockitoAnnotations.initMocks(this)进行mocks的初始化
2. 三种方式用于Mockito的单元测试
2.1 设置方法预期返回
Mockito.when(list.get(0)).thenReturn(“111”)
2.2 验证方法调用(不会用- -)
Mockito.verify(list, times(2)).get(0)
2.3 验证返回值
Assert.assertNotNull(task)
ps:当需模拟多个if-else情况时,只需在测试方法中多次调用目标方法即可,如果想为了清晰也能对同一个方法进行多个测试方法。
! ! ! 当使用Mockito匹配可变参数时,多传一次同类型的即可
! ! ! 当模拟静态方法或者工厂方法时,使用PowerMock,
在类上加如下注解:
@RunWith(PowerMockRunner.class)
@PrepareForTest(value = {UyunServiceHolder.class})
代码如下:
UyunServiceHolder uyunServiceHolder = PowerMockito.mock(UyunServiceHolder.class);
PowerMockito.mockStatic(UyunServiceHolder.class);
PowerMockito.when(UyunServiceHolder.getInstance()).thenReturn(uyunServiceHolder);
! ! ! dao层的方法不需要mock
更多推荐


所有评论(0)