gpt4 book ai didi

spring-boot - 使用@MockBean 的 Spring Boot 集成测试不释放 jdbc 连接

转载 作者:行者123 更新时间:2023-12-05 06:36:48 25 4
gpt4 key购买 nike

我对集成测试有疑问。

我们正在使用 spring boot 1.4.4 + spring batch + testcontainers + postgres。

每个集成测试注释:

@RunWith(SpringRunner.class)
@ActiveProfiles(value = { "integrationtest" })
@SpringBootTest(classes = ServiceApplication.class)

问题是:

看起来每个包含@MockBean 注释的集成测试都会创建一个新的上下文。每个新上下文都会创建一个包含 10 个连接的新连接池。但是之前的上下文并没有释放它的连接。

所以在每次这样的测试之前,我可以从 postgres 中选择连接数:

select sum(numbackends) from pg_stat_database;

并看到每个测试都添加了 10 个新连接。

第 10 次测试因 100 个连接限制而失败。

请问如何解决?

最佳答案

看起来像注释的组合 + 所有@MockBean 类计算某种“哈希”。

每个“散列”创建自己的上下文,spring 缓存它。默认情况下,每个包含创建自己的连接池,其中包含 10 个连接。

虽然所有上下文都被缓存,但所有连接池都保持连接 - 这就是我的问题的原因。

正如 jusermar10 所说,您可以使用 @DirtiesContext 注释修复它。

关于spring-boot - 使用@MockBean 的 Spring Boot 集成测试不释放 jdbc 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48823226/

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