概念
Mock其实是一种思想,一种单元测试的解决方案。
Mock出现之前,我们的单元测试工作量很大,而且往往会受限于开发进程。
Mock很好地解决了局部单元测试的问题,提出了预期返回值并模拟的概念。
目前Mock类库非常之多,实在不知道怎么选择的时候,就选PowerMock吧。不止因为它本身功能的强大,还因为它提供了很好地扩展。后期切换到其他类库也是很方便的。
使用
在使用Mock的过程中,一定要注意运行环境的指定。
(1)直接使用Mocktio.mock()时是不需要指定运行环境的;
(2)使用@Mock和@InjectMocks注解至少要指定运行环境是MockitoJUnitRunner;
(3)使用@MockBean(Spring提供的!非Spring环境不能使用)注解需要指定运行环境是SpringRunner(或SpringJUnit4ClassRunner,两者等价);
(4)使用PowerMock时要注意,运行环境要指定为PowerMockRunner,且不能使用@MockBean。
综上,默认(junit环境)< MockitoJUnitRunner(mocktio环境)< PowerMockRunner(PowerMock环境)或SpringRunner(Spring环境)。