1.私有方法的覆盖
@Test public void testSortMessage01() throws Exception{ Class<SortMessageServiceImpl> sortMessageServiceClass = SortMessageServiceImpl.class; Method convert2UmsModel = sortMessageServiceClass.getDeclaredMethod("convert2UmsModel",OrderUmsInfo.class); convert2UmsModel.setAccessible(true); OrderUmsInfo orderUmsInfo = new OrderUmsInfo(); orderUmsInfo.setTenantId(1l); convert2UmsModel.invoke(new SortMessageServiceImpl(),orderUmsInfo); }
其中 "convert2UmsModel" 是私有方法名,"OrderUmsInfo.class"是私有方法入参对象的类
2.方法中私有属性的赋值
@InjectMocks private OrderBankSearchResourceRpcServiceImpl orderBankSearchResourceRpcService;
@Test public void testQueryOrderData01() throws NoSuchFieldException, IllegalAccessException { Class<OrderBankSearchResourceRpcServiceImpl> serviceClass = OrderBankSearchResourceRpcServiceImpl.class; Field declaredField = serviceClass.getDeclaredField("queryKeys"); declaredField.setAccessible(true); declaredField.set(orderBankSearchResourceRpcService,new String[]{}); Field declaredField2 = serviceClass.getDeclaredField("region"); declaredField2.setAccessible(true); declaredField2.set(orderBankSearchResourceRpcService,"1"); Field declaredField3 = serviceClass.getDeclaredField("appName"); declaredField3.setAccessible(true); declaredField3.set(orderBankSearchResourceRpcService,"2"); orderBankSearchResourceRpcService.queryOrderData(2l); }
3.对私有实体类属性的赋值(对私有实体覆盖率提升无效)
@Test public void tess() throws Exception { { Class<?> aClass = Class.forName("com.xstore.order.account.web.controller.admin.AdminController"); Class<?>[] declaredClasses = aClass.getDeclaredClasses(); Class<?> retryReconcileVO = Arrays.stream(declaredClasses).filter(x -> { System.out.println(x.getName()); return x.getName().contains("RetryReconcileVO"); }).findFirst().get(); Constructor<?> constructor = retryReconcileVO.getConstructor(); constructor.setAccessible(true); Object o1 = constructor.newInstance(); System.out.println(Arrays.toString(retryReconcileVO.getDeclaredFields())); Field id = retryReconcileVO.getDeclaredField("tenantId"); id.setAccessible(true); id.set(o1, 123l); System.out.println(o1); } }