目前,我在测试套件中的每次测试后都使用以下内容。然而,它使它变得非常慢,因为 H2 必须在每次测试后重新加载应用程序上下文。有没有更快的方法来清除我的所有对象,这样我就不会在测试之间结转?
@org.junit.After
public void tearDown() throws Exception {
context.close();
}
尝试context.clear()
EntityManager.clear:清除持久性上下文,导致所有托管实体分离。对尚未刷新到数据库的实体所做的更改将不会被持久化。
Session.clear:完全清除会话。
此外,您可以通过实现单例模式来确保每个测试中使用的实体管理器/会话是相同的。您可以使用动态 SQL 脚本来清除所有表中的数据。两者都在 PersistenceHelper 下进行了描述。