1 mock 静态方法
mockito库并不能mock静态方法,需要依赖powermock
第一步:给类添加注解
// 静态类优先加载,所以需要提前告诉powermock哪些静态类需要mock
public class SupplierServiceImplTest extends PowerMockTestCase {}第二步:mock使用
@Test(expectedExceptions = BusinessException.class) public void testAddSupplierAccount_genIdentityNoError() { // 告诉powermock,需要mock该类的所有静态方法 PowerMockito.mockStatic(PasswordGenerator.class); final SupplierAccountDto supplierAccountDto = new SupplierAccountDto(); supplierAccountDto.setName("小明"); final String randomPWd = "666"; PowerMockito.when(supplierDao.selectByEmail(anyString())) .thenReturn(new ArrayList<HaitaoSupplier>()); // 静态方法mock PowerMockito.when(PasswordGenerator.genPwd()).thenReturn(randomPWd); PowerMockito.when(pwEncoder.encode(anyString())).thenReturn(randomPWd); PowerMockito.when(identityNoGenerator.genIdentityNo()).thenReturn(-1L); supplierServiceImpl.addSupplierAccount(supplierAccountDto); verify(pwEncoder).encode(randomPWd); }
2 mock void 方法
// void嘛,doNothing顾名思义 PowerMockito.doNothing().when(casService).addSupplier(anyLong(), any(ServiceKey.class));
文章来源: Mockito调用静态方法和void方法