在我的测试代码中,我需要在每种方法处都有一个空白/空数据库。是否有代码可以实现这一目标,在测试的@Before 中调用?
问问题
8007 次
2 回答
2
其实你总是可以使用JPQL,
em
.createQuery("DELETE FROM MyEntity m")
.executeUpdate()
;
但请注意,实体缓存也不会被清除。但是出于单元测试的目的,它看起来像是一个很好的解决方案。
于 2010-07-26T08:44:59.457 回答
0
在我的测试代码中,我需要在每种方法处都有一个空白/空数据库。
我会在事务内部运行测试方法(并在每个方法结束时回滚)。这是通常的做法。如果您在之后删除它们,我看不到提交事务并将数据写入数据库的意义。只是不要承诺。
另一种选择(非排他性)是在测试执行之前使用 DbUnit 将您的数据库置于已知状态。执行此操作时,您通常不需要清理它。
另一种选择是使用原始 JDBC 删除数据库(如果存在),然后让 JPA 重新创建整个数据库。不过会很慢。
于 2010-07-26T23:13:54.840 回答