我想保留一个内存中的sqlite数据库,但是没有连接。
我正在对Web应用程序进行单元测试,因此在@BeforeAll方法中,我进行了一些初始化,然后在各种测试方法中,进行了一些DDL操作。
当然,当最后一个打开的连接关闭时,内存db中的sqlite被拆除,破坏了我的测试。
我做到了保持内存数据库中的H2处于打开状态,直到JVM存活为止,
jdbc:h2:mem:test;DB_CLOSE_DELAY=-1
但是我找不到sqlite的替代品。 我尝试过
jdbc:sqlite::memory:&cache=shared
但似乎不起作用。
有可能吗?
答案 0 :(得分:0)
由于单元测试应该是相互独立的,因此我建议不要进行这种方式。根据您使用的基础框架,您可能希望使用注释来驱动初始化和拆卸SQL的执行。例如,对于Spring,您可以使用以下代码:
如果您不能使用注释,或者真的决心沿着这条道路前进(上下文就是一切:您可能完全有充分的理由),一种可能性是在您的@BeforeAll
方法中打开一个附加连接,该方法然后您可以使用@AfterAll
方法手动关闭。由于这是由您的代码单独管理的附加连接,因此sqlite会被欺骗,直到执行@AfterAll
方法后才执行清理。
如果希望它处于JVM级别,则可以使用类的静态初始化程序...