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

zma*_*anc 5 tdd hibernate jpa h2 jpa-2.0

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

@org.junit.After
public void tearDown() throws Exception {
    context.close();
}
Run Code Online (Sandbox Code Playgroud)

Gle*_*est 7

尝试 context.clear()

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

Session.clear:完全清除会话.

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