锁定老帖子 主题:吹弹得破是重回一人犯错,全家光荣的老路
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间: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非常适合测试复杂的框架,框架与应用最大的不同是框架调用别人,应用是被别人调用,这就决定了框架的单元测试适合用那种录制脚本然后验证的方式,而应用的单元测试不必这么白盒,只需验证特定输入的输出即可。 |
|
返回顶楼 | |
发表时间: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,就是分别几个独立的事务,你还能回滚个啥? |
|
返回顶楼 | |
发表时间:2006-04-21
引用 有必要审视一下mock的适用性问题了。
个人感觉mock非常适合测试复杂的框架,框架与应用最大的不同是框架调用别人,应用是被别人调用,这就决定了框架的单元测试适合用那种录制脚本然后验证的方式,而应用的单元测试不必这么白盒,只需验证特定输入的输出即可。 你做TDD吗? |
|
返回顶楼 | |
发表时间:2006-04-21
做的。
|
|
返回顶楼 | |
发表时间:2006-04-21
不好意思,我刚刚试用了一下你说的spring的抽象测试父类,不错效果挺好的。以后改用这种方式了。测试速度提高了不少。
|
|
返回顶楼 | |
发表时间:2006-04-21
呵呵,这也都是和白衣学的。
似乎spring的抽象测试父类已经帮我们做了Open Session In Test的事,以后研究一下这部分的代码。 |
|
返回顶楼 | |
发表时间:2006-04-21
OpenSessionInTest,ss的文档的测试部分有讲,而且自己写成open session in test也很简单,robbin以前说过了,在web层的TestCaseUseRealDAO也自己实现了,两三行而已。
|
|
返回顶楼 | |
发表时间:2006-04-21
robbin 写道 不好意思,我刚刚试用了一下你说的spring的抽象测试父类,不错效果挺好的。以后改用这种方式了。测试速度提高了不少。
flyingbug 写道 看到robbin提起easymock,我倒想说两句,spring提供的mock包跟easymock有异曲同工之妙........ 竟没被理睬 |
|
返回顶楼 | |
发表时间:2006-04-21
flyingbug 写道 robbin 写道 不好意思,我刚刚试用了一下你说的spring的抽象测试父类,不错效果挺好的。以后改用这种方式了。测试速度提高了不少。
flyingbug 写道 看到robbin提起easymock,我倒想说两句,spring提供的mock包跟easymock有异曲同工之妙........ 竟没被理睬 两码事。 |
|
返回顶楼 | |
发表时间:2006-04-21
robbin 写道 flyingbug 写道 robbin 写道 不好意思,我刚刚试用了一下你说的spring的抽象测试父类,不错效果挺好的。以后改用这种方式了。测试速度提高了不少。
flyingbug 写道 看到robbin提起easymock,我倒想说两句,spring提供的mock包跟easymock有异曲同工之妙........ 竟没被理睬 两码事。 晕,我记得原来只有mock这个packege的,啥时候分成test和mock了 一码事一码事,表达有误,应是mock包下的test部分 |
|
返回顶楼 | |