Mockito调用静态方法和void方法

匿名 (未验证) 提交于 2019-12-03 00:36:02

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));
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!