论坛首页 综合技术论坛

吹弹得破是重回一人犯错,全家光荣的老路

浏览 60483 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-04-21  
robbin 写道

我之所以慢一点,其实并不是慢在初始化spring容器上面了,而是慢在每个test都需要反复drop/create table上面了。
当然,也可以我每次test之后,test方法自己负责清理测试数据。但是你只要hold spring容器,就无法避免Hibernate二级缓存的影响。所以还是test之间有相关性,最好的办法就是每个test  drop/create db.

可以利用AbstractTransactionalDataSourceSpringContextTests每次测试结束后回滚事务,来避免test之间数据干扰,就不需要每次drop/create table了。

robbin 写道

不知道大家是怎么做单元测试的,我这样做下来,效果感觉不错。但是单元测试的代码量可能会比较大一些,有些分支流程多的功能代码,其测试代码会非常庞大,因为需要测试每个流程。但是这样做下来的结果对代码信心很足,也完全不怕大规模重构。

有必要审视一下mock的适用性问题了。
个人感觉mock非常适合测试复杂的框架,框架与应用最大的不同是框架调用别人,应用是被别人调用,这就决定了框架的单元测试适合用那种录制脚本然后验证的方式,而应用的单元测试不必这么白盒,只需验证特定输入的输出即可。
0 请登录后投票
   发表时间:2006-04-21  
daquan198163 写道
robbin 写道

我之所以慢一点,其实并不是慢在初始化spring容器上面了,而是慢在每个test都需要反复drop/create table上面了。
当然,也可以我每次test之后,test方法自己负责清理测试数据。但是你只要hold spring容器,就无法避免Hibernate二级缓存的影响。所以还是test之间有相关性,最好的办法就是每个test  drop/create db.

可以利用AbstractTransactionalDataSourceSpringContextTests每次测试结束后回滚事务,来避免test之间数据干扰,就不需要每次drop/create table了。

robbin 写道

不知道大家是怎么做单元测试的,我这样做下来,效果感觉不错。但是单元测试的代码量可能会比较大一些,有些分支流程多的功能代码,其测试代码会非常庞大,因为需要测试每个流程。但是这样做下来的结果对代码信心很足,也完全不怕大规模重构。

有必要审视一下mock的适用性问题了。
个人感觉mock非常适合测试复杂的框架,框架与应用最大的不同是框架调用别人,应用是被别人调用,这就决定了框架的单元测试适合用那种录制脚本然后验证的方式,而应用的单元测试不必这么白盒,只需验证特定输入的输出即可。


利用事务回滚这种机制是完全不对的。只要我不用OpenSessionInView模式,我一个test里面调用n次Service,就是分别几个独立的事务,你还能回滚个啥?
0 请登录后投票
   发表时间:2006-04-21  
引用
有必要审视一下mock的适用性问题了。
个人感觉mock非常适合测试复杂的框架,框架与应用最大的不同是框架调用别人,应用是被别人调用,这就决定了框架的单元测试适合用那种录制脚本然后验证的方式,而应用的单元测试不必这么白盒,只需验证特定输入的输出即可。


你做TDD吗?
0 请登录后投票
   发表时间:2006-04-21  
做的。
0 请登录后投票
   发表时间:2006-04-21  
不好意思,我刚刚试用了一下你说的spring的抽象测试父类,不错效果挺好的。以后改用这种方式了。测试速度提高了不少。
0 请登录后投票
   发表时间:2006-04-21  
呵呵,这也都是和白衣学的。
似乎spring的抽象测试父类已经帮我们做了Open Session In Test的事,以后研究一下这部分的代码。
0 请登录后投票
   发表时间:2006-04-21  
OpenSessionInTest,ss的文档的测试部分有讲,而且自己写成open session in test也很简单,robbin以前说过了,在web层的TestCaseUseRealDAO也自己实现了,两三行而已。
0 请登录后投票
   发表时间:2006-04-21  
robbin 写道
不好意思,我刚刚试用了一下你说的spring的抽象测试父类,不错效果挺好的。以后改用这种方式了。测试速度提高了不少。

flyingbug 写道

看到robbin提起easymock,我倒想说两句,spring提供的mock包跟easymock有异曲同工之妙........


竟没被理睬
0 请登录后投票
   发表时间:2006-04-21  
flyingbug 写道
robbin 写道
不好意思,我刚刚试用了一下你说的spring的抽象测试父类,不错效果挺好的。以后改用这种方式了。测试速度提高了不少。

flyingbug 写道

看到robbin提起easymock,我倒想说两句,spring提供的mock包跟easymock有异曲同工之妙........


竟没被理睬


两码事。
0 请登录后投票
   发表时间:2006-04-21  
robbin 写道
flyingbug 写道
robbin 写道
不好意思,我刚刚试用了一下你说的spring的抽象测试父类,不错效果挺好的。以后改用这种方式了。测试速度提高了不少。

flyingbug 写道

看到robbin提起easymock,我倒想说两句,spring提供的mock包跟easymock有异曲同工之妙........


竟没被理睬


两码事。


晕,我记得原来只有mock这个packege的,啥时候分成test和mock了
一码事一码事,表达有误,应是mock包下的test部分
0 请登录后投票
论坛首页 综合技术版

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