JAVA的mock工具mockito簡介


在測試過程中,難免會碰到交互的外圍系統不給力的情況,這時候mock就派上用場了,前段時間跟同學聊到這塊的時候,他向我推薦mockito這個mock工具,試用了一下,確實很好用,這里給大家介紹下這款工具:

1、mockito的特點

  • 它既能mock接口也能mock實體類(咱測試框架mock工具也能做到)
  • 簡單的注解語法-@Mock
  • 簡單易懂,語法簡單
  • 支持順序驗證
  • 客戶化參數匹配器

2、mockito的配置

只需依賴jar包即可:

<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<scope>test</scope>
<version>1.8.5</version>
</dependency>

2、mockito的用法

注解的方式:

只需在要mock的對象上添加@Mock即可,如:

public class ArticleManagerTest {

@Mock private ArticleCalculator calculator;
@Mock private ArticleDatabase database;
@Mock private UserProvider userProvider;

 

private ArticleManager manager;

 

不使用注解:
//要mock的實體類
LinkedList mockedList = mock(LinkedList.class);
//模擬方法調用的返回值
Mockito.when(mockedList.get(0)).toReturn("first");
Mockito.when(mockedList.get(1)).toThrow(new RuntimeException());
//打印出"first"
System.out.println(mockedList.get(0));
//拋出異常
System.out.println(mockedList.get(1));
//返回null,因為還沒有對返回值做模擬
System.out.println(mockedList.get(999));
3、參數匹配器
//使用anyInt()來匹配任意int型參數
Mockito.when(mockedList.get(anyInt())).toReturn("element");

//可以使用自己定義的匹配器 (isValid()是自定義的參數匹配器):
Mockito.when(mockedList.contains(argThat(IsValid()))).toReturn("element");

public class IsValid extends ArgumentMatcher<Object> {

@Override
public boolean matches(Object argument) {
if (argument instanceof String) {
return true;
} return false;
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM