Mockito 一个优秀的 Mock 测试框架( 二 )


Mockito 一个优秀的 Mock 测试框架

文章插图
【Mockito 一个优秀的 Mock 测试框架】 
可以看到当我们调用 get(0) 和 get(1) 的时候控制台成功地抛出了异常 。这种方式通常被称为Stubbing,除了使用 when...thenReturn 方式之外,还有一种形式可以表达,代码如下:
@Testpublic void testDoReturn() throws Exception {Iterator mockedList = mock(Iterator.class);doReturn("hello").when(mockedList).next();Object next = mockedList.next();System.out.println(next);doReturn("world").when(mockedList).next();Object next2 = mockedList.next();System.out.println(next2);//上面的过程也可以写成如下方式doReturn("test1", "test2").when(mockedList).next();Object next3 = mockedList.next();System.out.println(next3);Object next4 = mockedList.next();System.out.println(next4);}运行结果如下所示,也可以用 doThrow() 方法进行抛异常:
Mockito 一个优秀的 Mock 测试框架

文章插图
 
测试用例 3日常开发中我们通过要保证方法的时效性,或者说我们要保证我们某个方法必须在多长时间内执行完成,这个时候我们也可以通过 mock 的方式来验证我们的方法是否满足要求 。代码如下:
@Testpublic void testTimeout() throws Exception {HttpService mock = mock(HttpService.class);String url = "http://www.xxx.com";mock.getRequest(url);verify(mock, timeout(100)).getRequest(url);//timeout时间后,用自定义的检验模式验证getRequest()VerificationMode customVer = new VerificationMode() {@Overridepublic void verify(VerificationData data) {}@Overridepublic VerificationMode description(String s) {return null;}};verify(mock, new Timeout(100, customVer)).getRequest(url);}Mockito 还有很多 API 可以使用,更多的使用方式,大家可以参考下面这个网站 。https://www.tutorialspoint.com/mockito/mockito_timeouts.htm,有更详细的介绍 。
Mockito 一个优秀的 Mock 测试框架

文章插图
 




推荐阅读