浏览 1628 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-07-22
由于我们的项目DAO的测试是直接和数据库打交道的,所以在测试的时候就继承了:AbstractTransactionalDataSourceSpringContextTests。所以每次我们测试完成一个POJO的时候都把数据回滚(setComplete())这样就可以不把脏数据放入到数据库中。但是现在问题又来了,由于我们做web层的同事并没有写什么测试,所以他们就直接引用我们的类,所以他们测试就直接操作数据库,比如新增数据;所以这样的话数据库就存在我们无法预测性的数据,但是我们DAO的单元测试在下一次运行的时候就会出现错误,测试而不能通过。可能有的朋友会说,可以考虑使用另一个数据库。可是使用我们使用maven2并没有把测试给除去。。。
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-07-23
让他们用MOCK.....
否则粘连过多的话,很难发现是web层的问题还是DAO层的问题 |
|
| 返回顶楼 | |
|
时间:2007-07-23
在这里,应该有一个方法的,AbstractTransactionalDataSourceSpringContextTests.setComplete()
Overridden to prevent the transaction committing if a number of tables have been cleared, as a defensive measure against accidental permanent wiping of a database. 实际效果,如果你在SpringTest中,add()一个PO。 用了这个方法,就会直接保存到DB中。 |
|
| 返回顶楼 | |
|
时间:2007-07-24
你們的狀況跟我們的很像
我們的解法是像ror那樣,準備三個database 整合測試有專門測試用的db 然後在測試時,透過取得不同的spring context(application-context.xml) 也就是說不同的設定檔,會取到不同的db 測試時有專用的db,這樣不論在maven,在ide,在整合服務器裡 都以正常的使用 |
|
| 返回顶楼 | |
|
时间:2007-07-24
ls,是单元测试,没到sit这个级别。
能用mock的,mock。 实在不行的, 准备空库,单元测试类中,先清库,再自行准备测试数据,事务回滚,每个测试用例跑完后依然是空库。 |
|
| 返回顶楼 | |
|
时间:2007-07-24
用内存库的好处我就不再说了
用夹具生成一些示例数据来进行客户演示的作用也是不错的。 |
|
| 返回顶楼 | |
|
时间:2007-07-25
使用DBUnit之类的工具, 准备好初始测试数据后,导出到XML文件备份.
在BaseTestCase的setUp中备份当前DB和导入初始数据(速度考虑,仅备份和导入当前TestCase相关的Table),在TearDown中还原刚才备份的数据. 这样一来,不影响Web层的测试,也不会影响单元测试的结果. 目前发现的缺点,速度有些慢 :( 不知道大家有何建议?Thanks |
|
| 返回顶楼 | |










