5

目前,我在测试套件中的每次测试后都使用以下内容。然而,它使它变得非常慢,因为 H2 必须在每次测试后重新加载应用程序上下文。有没有更快的方法来清除我的所有对象,这样我就不会在测试之间结转?

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

1 回答 1

7

尝试context.clear()

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

Session.clear:完全清除会话。

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

于 2013-05-02T04:03:44.490 回答