请选择 进入手机版 | 继续访问电脑版
本站特色:极好的技术研究氛围!所有技术交流,必有回复!

疯狂Java联盟

 找回密码
 加入联盟
查看: 4947|回复: 4

使用easymock进行TDD

[复制链接]
发表于 2008-11-6 14:38:28 | 显示全部楼层 |阅读模式
1.TDD简介
  关于TDD的介绍, 之前笔者已经进行过相关的描述, 想了解这个内容, 介绍一本经典之作Kent Beck<<测试驱动开发>>

       也可以从以下网址下载关于TDD介绍以及DbUnit的详细介绍。可以在开发业务的过程中,使用EasyMock进行TDD,当开发完后,可以使用DbUnit进行功能测试。


1.1TDD的简单例子
  为什么用TDD,怎么样用TDD,可以参看以下网址的附件

            http://www.crazyit.org/thread-581-1-1.html

2.EasyMock简介

2.1什么是mock

      Mock译为假的,虚拟的。Mock Object:虚拟的对象。

   也就是,我们在编写测试的时候,为了测试某些代码,但是测试这些代码的时候,往往和另外的一些对象接口依赖了。这时可以创建一些虚拟接口进行使用,而不需要关心这些接口的具体行为。


2.2 应用场景
  例如:最常见的三层架构中,Action, Service, DAO, 假如我们要针对Service进行测试,那么必然离不开Dao,但是由于数据的问题,同样一个单元测试,在数据库有不同的数据的情况下,运行结果也大相径庭。

   在上面TDD简介中的连接地址中,介绍了如何使用DbUnit解决这个问题,但使用DbUnit,需要查询数据库,启动应用(或者启动spring容器)。这样,使测试运行的速度变慢,这样,我们可以选择用Mock,对DAO接口进行模拟,再进行测试。下面将介绍如何使用EasyMock


2.3意义

    使用Mock Object,我们可以集中精力去测试我们需要测试,关心的部分代码,该部分代码使用到的其他对象的创建,我们可以使用Mock来创建,因为这些对象怎么创建,做了些什么,返回什么值,并不是我们所关心的,还有那些创建那些对象存在一系列问题,在网上搜索到了以下几种:



  • 真实对象具有不可确定的行为,产生不可预测的效果,(如:股票行情,天气预报)
  • 真实对象很难被创建的
  • 真实对象的某些行为很难被触发
  • 真实对象实际上还不存在的(和其他开发小组或者和新的硬件打交道)
    等等。

    因此,为了让测试变得更加容易,就选择Mock


2.4.实际中用TDD遇到的困难,EasyMock的解决

    例如在数据库应用开发的时候,需要对数据库进操作。数据的问题就成了极大的问题,这使得TDD变得十分困难:运行测试,失败,作一点改动,运行成功,再迭代实现业务代码。如果按照这个步骤,运行N次的单元测试,可能要创建数据库连接等一系列对象,如果使用springhibernate等框架,还可能需要加载好多的配置文件。运行一次的时间已经很久,不利于使用TDD




附件中为两个easymock模拟DAO来测试Service层的使用例子,均为doc文件.

[ 本帖最后由 杨恩雄 于 2008-11-6 17:34 编辑 ]

mock.rar

83.59 KB, 下载次数: 27

售价: 2 疯狂金币  [记录]

发表于 2008-11-6 14:48:34 | 显示全部楼层
挺不错的。值得支持。
现在国内确实有一些公司开始出现测试部门了。
不过这些测试部门大都停留在黑盒测试阶段,有的公司也号称在做“灰盒测试”
真正做白盒测试,做覆盖的公司似乎还不多。
能真正用TDD进行开发的公司就更少了。
 楼主| 发表于 2008-11-6 14:51:13 | 显示全部楼层
我相信这个一定是趋势, 从国外下的项目, 我相信大部分下的都是敏捷出来的, 我们可能做不了敏捷, 但是开发的时候TDD, 应该也会流行起来
发表于 2008-11-6 17:17:47 | 显示全部楼层
顶个. ....
发表于 2011-2-10 10:18:57 | 显示全部楼层
TDD现在用得比较多了
但是大多数资料还是以理论为主

一个团队要开始TDD做项目还是难度有点大
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

微信群请扫二维码
QQ交流1群:
545923995
(未满)

小黑屋|手机版|Archiver|疯狂Java联盟 ( 粤ICP备11094030号 )

GMT+8, 2020-4-8 00:09 , Processed in 0.428877 second(s), 10 queries , File On.

快速回复 返回顶部 返回列表