好久没用PowerMockito了,最近使用了一下,踩了一堆的坑,记录一下
1、对于测试类中包含@Autowired注解的变量
可以使用@Mock注解,被测试类使用@InjectMock注解,注意此时被测试的类还是实例化后的,而不是mock出来的,如下:
@Mock
private TimeService timeService;
@Mock
private AddressService addressService;
@InjectMocks
private TestController testController;
2、对于局部变量的mock(new 出来的局部变量)
方法一:在1的基础上,将被测试的类加入到@PrepareForTest中,这时再mock局部变量就会生效(mock一个对象,然后将局部变量的构造方法进行mock,返回mock出的对象),如下:
AddressService addressService = PowerMockito.mock(AddressService.class);
PowerMockito.whenNew(AddressService.class).withNoArguments()
.thenReturn(addressService);
PowerMockito.when(addressService.printAddress()).thenReturn("127.0.0.1");
方法二:将被测试的类进行mock,然后将局部变量进行