一、導入依賴包html
<!-- 單元測試--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.8.47</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito2</artifactId> <version>1.7.1</version> <scope>test</scope> <exclusions> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>1.7.1</version> <scope>test</scope> <exclusions> <exclusion> <artifactId>objenesis</artifactId> <groupId>org.objenesis</groupId> </exclusion> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <!-- 單元測試-->
二、編寫測試類java
@PowerMockIgnore({ "javax.management.*" }) public class OrderServiceImplTest { /** * 注入測試對象類 */ @InjectMocks private OrderService orderService; /** * 注入須要mock的類(orderService類中存在調用myOrderService的方法) */ @Mock private MyOrderService myOrderService; /** * 初始化 */ @Before public void before() { orderService = new OrderServiceImpl(); myOrderService = PowerMockito.mock(MyOrderService.class); //第二個參數必須和OrderServiceImpl類中對MyOrderService類中的引用myOrderService一致 ReflectionTestUtils.setField(orderService,"myOrderService",myOrderService); } @Test public void testCreateOrder { //對所測試類中調用其餘包中的方法進行mock,方法參數可隨意化,但返回的對象必需要保證不發生空指針,即須要賦值的地方及時賦值。 ResultBean result = new ResultBean(); result.setCode("200"); Mockito.when(myOrderService.checkOnlyPrice(Mockito.any(OrderDO.class))).thenReturn(result); //此參數需實例化 MessageBO messageBO =orderService.createOrder("test"); //斷言 Assert.assertEquals(messageBO.getCode(), "200"); } //異常測試 @Test public void testCreateOrderException { Mockito.when(myOrderService.checkOnlyPrice(Mockito.any(OrderDO.class))).thenThrow(new DataAccessException(""));//業務層catch的異常 try { accountDataService.getBFinAtAccountDataList(""); } catch (Exception e) { Assert.assertTrue(e instanceof BusinessException);//業務層throw的異常 } } }