使用H2进行适当的tearDown Hibernate测试

时间:2013-04-23 14:57:26

标签: hibernate jpa tdd jpa-2.0 h2

目前,我在测试套件中进行的每项测试后都使用以下内容。但是它使得它非常慢,因为H2必须在每次测试后重新加载应用程序上下文。有没有更快捷的方法来清除我的所有物体,所以我在测试之间没有结转?

@org.junit.After
public void tearDown() throws Exception {
    context.close();
}

1 个答案:

答案 0 :(得分:7)

尝试 context.clear()

EntityManager.clear:清除持久性上下文,导致所有托管实体分离。对未刷新到数据库的实体所做的更改将不会保留。

Session.clear:完全清除会话。

此外,您可以通过实现单例模式来确保每个测试中使用的实体管理器/会话是相同的。您可以使用动态SQL脚本清除所有表中的数据。两者都在PersistenceHelper here下描述。