Mockito簡單使用java
對於某些不容易構造,或者不容易獲取比較複雜的對象,用一個虛擬的對象(Mock 對象)來建立以便測試的測試方法。spring
Mock-Object:ide
mock一個bug.class的id單元測試
Bug s=mock(Bug.class);
when(s.getId()).thenReturn("dddddddd");
System.out.println(s.getId()); //print ddddddd
Mock-List:測試
mock一個list裏面的元素this
Mockito註解使用:spa
爲須要mock的對象添加註解,在測試代碼執行的狀況下觸發該註解的生效,把mock覆蓋對象注入,以達到能夠在正式的代碼加入mock,只要控制好生效的機制3d
@Mock //mock 註解 @Autowired //spring 註解 private BugDaoI bugDao; @Override public Map<String, List<Object>> clo() { MockitoAnnotations.initMocks(this); //運行到這裏註解生效 List<Object[]> mockdata=new LinkedList<Object[]>(); mockdata.add(new Object[]{"8645","test1"}); when(bugDao.findBySql("select distinct name from tbug")).thenReturn(mockdata);//開始mock
經過mock集合jacoco提升測試代碼覆蓋率:code
測試代碼:能經過變化參數(等價類,邊界值)來觀察總體覆蓋率的提高,下面是mock後的覆蓋率提高示例對象
Jacoco統計:能更清晰的把握你寫的白盒測試代碼的覆蓋狀況,收益狀況
總結:
單元測試的mock比httpmock要簡單不少
經過註解對mock的時機進行控制,十分靈活
動態添加@Mock註解:
動態添加註解
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.0.GA</version>
</dependency>