Java 如何只加载一次带有TestPropertySource的数据库并跨多个测试类使用它?

Java 如何只加载一次带有TestPropertySource的数据库并跨多个测试类使用它?,java,spring,spring-bean,Java,Spring,Spring Bean,我有一个测试类,它使用@TestPropertySource加载hsqldb 基本上,测试文件已经变得相当大了,我想把它分解一下。问题是加载数据库需要。。。一些时间。不太多,但我不想创建几个测试文件,每个文件都加载数据库 我的代码如下所示: @TestPropertySource(properties = { "hsqldb.name=SettingsTest" }) @ContextConfiguration(classes = { settings.config.Config

我有一个测试类,它使用@TestPropertySource加载hsqldb

基本上,测试文件已经变得相当大了,我想把它分解一下。问题是加载数据库需要。。。一些时间。不太多,但我不想创建几个测试文件,每个文件都加载数据库

我的代码如下所示:

@TestPropertySource(properties = {
        "hsqldb.name=SettingsTest"
})
@ContextConfiguration(classes = { settings.config.Config.class }, loader = AnnotationConfigContextLoader.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
public class SvcTest
.
.
.

这将运行一些函数来加载数据库。我的理解是,一旦测试文件完成了所有测试,它就会停止数据库。如何使其保持运行,以便其他文件可以使用数据库,并仅在完成后关闭它?

尝试在测试类之间缓存应用程序上下文,同时将测试标记为脏使用,这有点矛盾:

DirtiesContext:测试注释,指示与测试关联的ApplicationContext是脏的,因此应关闭并从上下文缓存中删除

如果仅使用注释来重置数据库的状态,则可以创建一个注释来手动重置数据库中的测试数据,而不是拆下和重建完整的应用程序上下文

此外,如果测试集中在应用程序的存储库部分,Spring提供了。测试片加载应用程序上下文的一小部分,从而减少加载时间。一个例子是@JdbcTest注释,用于关注基于JDBC的组件的JDBC测试