gpt4 book ai didi

java - 如何仅使用 TestPropertySource 加载数据库一次并在多个测试类中使用它?

转载 作者:行者123 更新时间:2023-12-02 09:24:10 25 4
gpt4 key购买 nike

我有一个测试类,它使用 @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 将测试标记为“脏”有点矛盾:

DirtiesContext: Test annotation which indicates that the ApplicationContext associated with a test is dirty and should therefore be closed and removed from the context cache.

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

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

关于java - 如何仅使用 TestPropertySource 加载数据库一次并在多个测试类中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58456615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com