浏览:313 2008-05-28 16:47 来自 Sink      :
重构了一下单元测试代码,删了很多Database access层的单元测试.(就是单元测试不去数据库拿数据)
出发点是根据:
1.单元测试的测试对象的耦合要最小.对外部环境的依赖也要最小.
2.要尽量提高单元测试的速度.

解决方案:
引入Mock,让其模拟Database access类的功能.


引用句名言:
如果你想知道你的单元测试是否符合标准,
看断了网线,关了数据库后,你的单元测试是否运行通过就知道了.

大家认为单元测试应该访问数据库吗?
收藏 楼主
  3个月前  与雪共舞      :
我好像看过DAAB的单元测试时直接使用数据库。
一直没搞懂怎么使用Mock做数据库操作单元测试(总感觉建立测试数据很费时间),楼主能介绍一下吗。
1楼 回到顶楼 
  1个月前  水言木      :
我觉得单元测试不是太该访问数据库吧,但是用Mock要怎么做呢?我也不懂,于是我一直都测试不来
2楼 回到顶楼 
  1个月前  Sink      :
学过rails框架后,我对单元测试有了进一步理解。
单元测试代码尽量不连接数据库,也不测试Database access层的类(除了一些helper类)。
单元测试对象主要集中在一些对外部资源依赖性低的方法上,也就是低耦合的方法。
比如一些算法(排序,计算,解析。。。),而不是读取文件,打开、关闭数据库。
像对数据库所做的操作,当然也可以测试,这个应该放在“功能测试”,也是比“单元测试”的范围更大的测试,所花的时间也相对长。
最好能专门建立一个测试用的数据库。

最后,如果大家是初学单元测试的话,应该不拘一格,单元测试连接数据库也没关系,因为最后还可以把单元测试的代码重构到功能测试里去。

至于Mock的话,有NMock这个框架,Nunit的框架里也自带了一个Mock,大家在博客园的搜索里搜索Mock,NMock两个关键字就能查到很多好文章了。
3楼 回到顶楼 

注册用户登录后才能回复,登录注册
> 返回“单元测试”


其他话题

相关内容

相关链接

1 19903