标签:pre 使用 ret ati ever 实现类 div 三方 state
在开发中,我们经常会依赖同事或者第三方提供的接口,如果依赖的接口无法正常返回,比如该接口正在修复,或者网络异常无法调用第三方接口,那么对依赖该接口的开发会造成很大影响。
这时我们可能会想到模拟该接口以提供正常的返回值,用来继续当前的工作。
使用Mockito可以帮助我们解决这个问题。Mockito是进行Mock测试的一个框架,使用一个虚拟的Mock对象来模拟现实中比较复杂的对象。
其主要目标用来模拟复杂接口的实现:
比如
LinkedList mockedList = mock(LinkedList.class);
//模拟mockList行为
when(mockedList.get(0)).thenReturn("first");
when(mockedList.get(1)).thenThrow(new RuntimeException());
通过when函数来执行mockList的行为: 当获取第0个元素时,返回 first;获取第1个元素时,抛出RuntimeException异常。
数据库查询时,ResultSetHandle需要通过Statement接口的实现类来获得数据库查询的结果;如果要实现Statement接口相对来说比较复杂,那么可以使用Mock出一个虚拟的实现来进行ResultSetHandler的测试。
这里创建一个简单的demo来进行演示:
public interface Statement {
String query();
}
public class ResultSetHandler {
public void handlerResultSets(Statement statement) {
String queryStr = statement.query ();
System.out.println (queryStr);
}
}
public class MockTest {
public static void main(String[] args) {
// 使用mock模拟Statement接口行为,这里假设执行查询,返回的结果为test
Statement imock = Mockito.mock (Statement.class);
Mockito.when (imock.query ()).thenReturn ("test");
// spy用来模拟一个对象
ResultSetHandler useMock = Mockito.spy (ResultSetHandler.class);
useMock.handlerResultSets (imock);
}
}
本文使用Mockito的stubbing实现了简单接口,为调用该接口的类提供了一个模拟对象,还有很多高级特性可以参考Mockito官网进行学习
标签:pre 使用 ret ati ever 实现类 div 三方 state
原文地址:https://www.cnblogs.com/ryanLikeCode/p/10084462.html