论坛首页 综合技术论坛

单元测试交流

浏览 18823 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-06-06  
我们在单元测试时,经常会遇到对同数据库打交道的单元进行测试,但在数据库发生变化时我的单元测试也要发生变化。
现在我们用的是将对数据库的操作抽取成一个接口,然后虚拟这个接口来实现,但现在灵活性感觉不太好,不知道各位有没有好的办法
   发表时间:2005-06-06  
我一般是使用MOCK对象做这类的测试.

你可以去看看 EasyMock 和 JMock,都是开源的
0 请登录后投票
   发表时间:2005-06-06  
还有一个简单方法.

简历一个空白的数据库,只有结构没有数据.

向数据库插入数据->run test->删除数据.
0 请登录后投票
   发表时间:2005-06-06  
如果你用Hibernate的话,这个问题就很好解决了。设置SchemeAuto为create-drop,使用嵌入式数据库HSQLDB来单元测试。在你的测试执行的时候,Hibernate自动创建数据库表,当你的测试执行完毕以后,Hibernate自动drop表,可以保证你无论执行n次测试,测试结果都是可重复的。
0 请登录后投票
   发表时间:2005-06-06  
aihua 写道
还有一个简单方法.

建立一个空白的数据库,只有结构没有数据.

向数据库插入数据->run test->删除数据.


每个开发人员一个空数据库。
插入和删除数据可以用DBUnit来实现。
0 请登录后投票
   发表时间:2005-06-06  
我觉得还是自己mock一个DAO比较好,这样隔离了数据库这一层,只对业务逻揖进行测试就好了.
0 请登录后投票
   发表时间:2005-06-06  
引用
现在我们用的是将对数据库的操作抽取成一个接口,然后虚拟这个接口来实现,但现在灵活性感觉不太好


你是想问这种接口分离灵活性不太好,还是想问什么?
0 请登录后投票
   发表时间:2005-06-07  
DBUnit 也是挺好用的一个工具
0 请登录后投票
   发表时间:2005-06-07  
要看你的需求改变的有多麻烦。我以前大概写了一个有dbunit基本功能的接口。后来看到dbunit后想全部移到上面去,但是一比较要移植的精力还是放弃了。

也许够用就好吧。
0 请登录后投票
   发表时间:2005-06-07  
gf2008 写道
我们在单元测试时,经常会遇到对同数据库打交道的单元进行测试,但在数据库发生变化时我的单元测试也要发生变化。
现在我们用的是将对数据库的操作抽取成一个接口,然后虚拟这个接口来实现,但现在灵活性感觉不太好,不知道各位有没有好的办法


这就是要做到测试隔离啊! 想办法隔离吧,包括 每次测试之前 插入,测试完成删除。

或者mock吧。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics