【发布时间】:2011-02-24 19:10:51
【问题描述】:
我们有一个使用 spring/Hibernate/MySQL 构建的应用程序,现在我们想测试 DAO 层,但这里有一些我们面临的缺点。
考虑多个对象相互连接的用例,例如:Book has Pages。
- Page 对象不能在没有 Book 的情况下存在,因为 book_id 是 Page 中的强制性 FK。
- 为了测试页面,我必须创建一本书。
这个简单的用例很容易管理,但是如果您开始构建一个库,除非您没有创建围绕 Book 和 Page 的整个宇宙,否则您无法对其进行测试!
所以要测试页面;
- 创建库
- 创建部分
- 创建类型
- 创建作者
- 创建图书
- 创建页面
- 现在测试页面。
有没有一种简单的方法可以绕过这个“宇宙创建”,只单独测试页面对象。我还希望能够测试与 Page 相关的 HQL。例如:
SELECT new com.test.BookPage (book.id, page.name) FROM Book book, Page page.
JUnit 应该是独立运行的,所以我必须编写代码来构建测试用例中的所有支持对象来创建页面。有关如何加速该过程的任何提示。
编辑: Spring 遵循在测试运行后回滚事务的理念,从而恢复所有更改。随着我们进一步开发,预计架构会发生变化,我希望能够定期针对生产数据库(备份!)对其进行测试。
【问题讨论】:
标签: java unit-testing hibernate spring junit