保持内存数据库中的打开状态,直到 JVM 退出



我想在内存中保留一个SQLite数据库,但没有附加的连接。我正在对 Web 应用程序进行单元测试,因此@BeforeAll方法中,我在各种测试方法 DDL 操作中初始化。当最后一个连接关闭时,内存数据库中的SQLite被丢弃,从而破坏了我的测试。

我实现了在 JVM 存在时保持内存数据库中的 H2 打开:

jdbc:h2:mem:test;DB_CLOSE_DELAY=-1

但是我找不到SQLite的方法。我试过了:

jdbc:sqlite::memory:&cache=shared

但不起作用。可能吗?

由于单元测试应该是相互独立的,我建议不要这样做。根据您使用的底层框架,您可能希望使用注释来驱动初始化和拆卸 SQL 的执行。例如,对于 Spring,您可以使用以下内容:

https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#spring-testing-annotation-sql

如果您不能使用注释或真的决心沿着这条路继续前进(上下文就是一切:您可能完全有充分的理由(,一种可能性是在 @BeforeAll 方法中打开一个额外的连接,然后您将在 @AfterAll 方法中手动关闭该连接。由于这将是由您的代码单独管理的附加连接,因此 sqlite 将被诱骗在执行 @AfterAll 方法之前不执行其清理。

如果你想在JVM级别,你可以使用类的静态初始化器...

相关内容

最新更新