Mock Object: 把单元测试进行到底

转载 2004年11月04日 00:30:00

今天早晨一边喝咖啡, 一边看完http://www.connextra.com/aboutUs/mockobjects.pdf, 很有心得.

Mock Object的目的
用来模拟外部复杂的资源, 使UT可以测试那些依赖于外界资源(如数据库, 第三方产品等).

使用Mock Object的方法

  1. 定义一个Mock Object, 实现外部资源的接口或者定义
  2. Instantiate一个Mock Object, 并设置state
  3. 给Mock Object定义内部期望值
  4. 把这个Mock Object instance传递给需要测试的Unit进行操作
  5. 操作完毕后将Mock Object内部的状态与期待状态比较(assertion)

注意点

  • hard code需要的逻辑, 避免过多实现
  • Mock Object之间不应该互相调用, 如果出线这种状态, 多半Mock Object不必要的复杂了.

优点

  • 避免过早引入Instructure Dependency, 例如对数据库的选取
  • 可以从很多测试代码把assertion refactoring到Mock Object内部
  • 把测试的Scope缩小
  • 模拟各种情况
  • 有利于发现可以通过refactoring创建新的interface

缺点

  • Mock Object本身的错误无法避免
  • 因为是Unit Test, 所以类似积累误差的问题仍然需要Functional Testing进行

单元测试——Mock

mock就是在测试过程中,对于某些不容易构造或者 不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。...
  • u010164936
  • u010164936
  • 2015年03月08日 10:34
  • 1054

C++单元测试二:何时Mock及其是与非

什么时候需要mock 在前面一部分(C++单元测试一:并非看上去那么简单——几个很实际的问题),我遇到的问题是:一个单元测试工程只能测一个被测类(其实前文的后记部分也已指出,其实创建新工程也不是特别...
  • henan_lujun
  • henan_lujun
  • 2013年06月02日 23:01
  • 3695

单元测试之Mock

mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。...
  • tianwei7518
  • tianwei7518
  • 2015年06月03日 14:48
  • 3341

有效使用Mock编写java单元测试

Java单元测试对于开发人员质量保证至关重要,尤其当面对一团乱码的遗留代码时,没有高覆盖率的单元测试做保障,没人敢轻易对代码进行重构。然而单元测试的编写也不是一件容易的事情,除非使用TDD方式,否则编...
  • chjttony
  • chjttony
  • 2013年11月08日 16:04
  • 73408

单元测试和Mock方法

单元测试和MockService标签(空格分隔): 协作开发 虚拟接口 Android单元测试首先是开发的一部分,目的是保证没有耦合的情况下任何输入都能保证正确的输出(包括异常),可以保证程序的健壮性...
  • ConcurrentHashMap
  • ConcurrentHashMap
  • 2016年10月26日 21:21
  • 666

JUnit与Mockito单元测试典型示例

单元测试的重要性无需赘述,但单元测试也会遇到困难,其中之一就是如何 创建依赖。试想我们常见的server端分层架构,数据访问层Dao,业务层, 以及Web层,想要单元测试业务层,我们需要依赖Dao...
  • kimylrong
  • kimylrong
  • 2016年03月31日 14:50
  • 3474

spring MVC mock类单元测试(controller)

Spring从J2EE的Web端为每个关键接口提供了一个mock实现: MockHttpServletRequest 几乎每个单元测试中都要使用这个类,它是J2EE Web应用程序最常用...
  • dubinglin
  • dubinglin
  • 2017年04月06日 15:23
  • 709

Android单元测试-Mockito

本文为Mockito使用的学习笔记。Mockito概念相关添加 Mockito 依赖 testCompile "org.mockito:mockito-core:2.0.57-beta" Moc...
  • yaodong379
  • yaodong379
  • 2017年03月02日 20:25
  • 568

比较完整的junit单元测试之-----mock模拟测试

介绍   本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用Mockito的Java示例。 模拟(Mock)的概念    在软件开发的世界之外, "...
  • zhanganbo
  • zhanganbo
  • 2016年08月23日 09:42
  • 12863

[OpenStack UT] 分析OpenStack中单元测试之mock & mox

在社区贡献OpenStackcode时,会经常短短的几行代码也要添加不少的UT,耗时耗力,mock & mox 是很好的实现隔离的单元测试模块, 理解它们能够更快的做UT的编码。 mock & ...
  • juvxiao
  • juvxiao
  • 2014年03月23日 22:55
  • 4143
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mock Object: 把单元测试进行到底
举报原因:
原因补充:

(最多只允许输入30个字)