rip*_*234 5 java integration-testing hibernate
我想在一个集成测试与另一个集成测试之间截断所有数据库表.使用hibernate执行此操作的最佳方法是什么?
目前我这样做:
public void cleanDatabase() {
doWithSession(new Action1<Session>() {
@Override
public void doSomething(Session session) {
SQLQuery query = session.createSQLQuery("truncate table stuff");
// todo - generify this to all tables
query.executeUpdate();
}
});
Run Code Online (Sandbox Code Playgroud)
(doWithSession是一个创建和关闭会话的小包装器).我可以使用反射迭代我所有的映射对象......我想知道是否有人已经解决了这个问题.
我猜你可能没有使用Spring。如果您这样做,Spring 的事务测试支持将是理想的。
简而言之:Spring 在每个测试用例之前自动启动一个事务,并在测试用例之后自动回滚它,为您留下一个空(或至少未更改)的数据库。
也许你可以模仿这个机制:
在方法中打开事务@Before,在方法中回滚事务@After。
| 归档时间: |
|
| 查看次数: |
5671 次 |
| 最近记录: |