测试驱动开发的读书笔记(三)

Mock object(模拟对象):

mock的特点

  1、提供和被模拟对象相同的接口

  2、会检查每个调用的上下文

以下几种情况可以考虑创建Mock

  1、当被模拟的对象提供不确定的结果时(例如:当前时间或当前温度)

  2、很难创建或重现的状态(例如:网络错误)

  3、很慢(例如:数据库,需要在测试前初始化)

  4、还不存在或者也许会改变的行为

  5、为了测试想提过一些额外的信息和方法时

  当测试一个依赖于昂贵且复杂的资源的对象时,可尝试创建一个这些资源的模拟版本。

  mock对象鼓励你仔细思考各个对象的可见性,减少设计中的耦合,也给项目增加风险:模拟对象需要和现实对象的行为一样,因而是需要对模拟对象的行为进行测试的。

Fixture(固定设施):

  是指多个测试需要的通用对象(也被称为脚手架)

  例子:

  EmptyRectangleTest

  public void testEmpty()

  {

    Rectangle empty = new Rectangle(0,0,0,0);

    assertTrue(empty.isEmpty());

  }

  public void testWidth()

  {

    Rectangle empty = new Rectangle(0,0,0,0);

    assertTrue(0.0, empty.getWidth(), 0.0);

  }

    改成

  EmptyRectangleTest

  private Rectangle empty;

  public void SetUp()

  {

    Rectangle empty = new Rectangle(0,0,0,0);

  }

  public void testEmpty()

  {

    assertTrue(empty.isEmpty());

  }

  public void testWidth()

  {

    assertTrue(0.0, empty.getWidth(), 0.0);

  }

问题:

  里面提到如何测试不大可能被调用到的错误代码,一种是单元测试,需要嵌套到代码中;另一种是不是可以考虑通过性能测试来触发(估计触发也很有限)

观点记录:

  “希望使用白盒测试不是一种测试问题,而是一种设计问题。每当我想使用一个变量作为检验代码是否运行正确的一种方法时,我就会获得了改进设计的机会”

相关链接:

测试驱动开发的读书笔记(一):http://www.cnblogs.com/xwj-pandababy/articles/2128880.html

测试驱动开发的读书笔记(二):http://www.cnblogs.com/xwj-pandababy/articles/2130958.html

测试驱动开发的读书笔记(三):http://www.cnblogs.com/xwj-pandababy/articles/2133841.html

测试驱动开发的读书笔记(四):http://www.cnblogs.com/xwj-pandababy/articles/2133929.html

测试驱动开发的读书笔记(五):http://www.cnblogs.com/xwj-pandababy/articles/2134644.html

posted @ 2011-08-10 16:42  宇月--测试开发梦想家  阅读(253)  评论(0编辑  收藏  举报