请参考下面有关于打标的代码。

//You can mock concrete classes, not just interfaces
LinkedList mockedList = mock(LinkedList.class);
 
//stubbing
when(mockedList.get(0)).thenReturn("first");
when(mockedList.get(1)).thenThrow(new RuntimeException());
 
//following prints "first"
System.out.println(mockedList.get(0));
 
//following throws runtime exception
System.out.println(mockedList.get(1));
 
//following prints "null" because get(999) was not stubbed
System.out.println(mockedList.get(999));
 
//Although it is possible to verify a stubbed invocation, usually it's just redundant
//If your code cares what get(0) returns, then something else breaks (often even before verify() gets executed).
//If your code doesn't care what get(0) returns, then it should not be stubbed.
verify(mockedList).get(0);
  • 在默认情况下,所有的方法都会有一个返回值。mock 函数默认返回的是 null,一个空的集合或者一个被对象类型包装的内置类型。例如,针对 int/Integer 将会返回 0,针对 boolean/Boolean 将会返回 false。
  • 打标(Stubbing)可以被重写:例如一个通用的打标可以在启动的时候被确定(fixture),但是测试方法可以对其进行重写(override)。请注意重写的打标可能会在有很多标记的时候存在潜在的问题。
  • 一旦被打标,方法将会总是返回已标记的内容,这个与这个方法被调用多少次无关。
  • 最后的标记非常重要——当你对有相同参数的方法进行多次标记的时候。换句话说就是:标记的顺序是有关的(the order of stubbing matters),但是这个意义并不是很大。例如,这个只在标记完全相同的方法或者有时候参数匹配(argument matchers)被启用的时候,等情况下才会出现。, etc.

请注意,上面的测试代码在运行的时候回出现错误。

这是因为在测试代码运行的时候,我们尝试输出 mockedList.get(1),这个在测试的时候,因为我们打标为抛出异常,所以这一句话将会在测试代码中抛出异常。

运行时候,抛出异常的界面如下:

https://www.cwiki.us/pages/viewpage.action?pageId=47843418

最新文章

  1. AngularJS的JSONP服务
  2. deep learning 的综述
  3. C语言 二级指针内存模型①
  4. 【python cookbook】【字符串与文本】8.编写多行模式的正则表达式
  5. debian7 编译qtopia错误解决案例
  6. bzoj1061 1283
  7. Zend Studio使用
  8. win8.1去掉鼠标右键回收站固定到开始菜单的方法
  9. [编织消息框架][netty源码分析]2 eventLoop
  10. MSCI 成份股 清单
  11. PHP获取路径或目录实现
  12. 从Unity中的Attribute到AOP(二)
  13. 详解QT5.10.0搭载OpenCV3.4.0环境配置步骤说明
  14. python 子包引用父包和其他子包
  15. 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework
  16. poj 1125 谣言传播 Floyd 模板题
  17. [转](OS 10038)在一个非套接字上尝试了一个操作 的解决办法
  18. 二分 poj 3273
  19. Django:model中的ForeignKey理解
  20. RHEL7系统管理常用工具

热门文章

  1. Fiddler之常用操作(过滤器设置,代理设置,手机抓包设置,手机代理配置)
  2. APOC官网触发器示例执行后Web页面一直转圈
  3. js跨域原理及解决方案
  4. linux 安装telnet、curl、ifconfig、vim、ping等工具
  5. webmagic学习之路-1:采集安居客列表页测试
  6. how to solve error when start Hyper-V quick create app error
  7. Python算法题(二)——国际象棋棋盘(排列组合问题,最小的K个数)
  8. mybatis-plus使用Oracle函数生成主键
  9. css高度居中
  10. 4.Struts2-OGNL