gpt4 book ai didi

java - 如何使用 Gemfire 和多个 Spring 应用程序配置在 Spring Boot 中执行集成测试?

转载 作者:行者123 更新时间:2023-12-01 11:02:16 24 4
gpt4 key购买 nike

我正在尝试运行一个集成测试,该测试的 SpringApplicationConfiguration 与其他集成测试不同。该问题仅在配置 Gemfire 时才会出现。

此处提供了错误演示:https://github.com/kemitix/test-spring-boot-gemfire-testing

有两个测试类ContextsApplicationTestsContextsApplicationWithCustomTests

第一个使用基于 ContextsApplication 类的标准 SpringApplicationConfiguration。另一个尝试还包含 CustomConfiguration 类来覆盖 Bean。

测试一:

@IntegrationTest
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ContextsApplication.class)
public class ContextsApplicationTests {
...

测试二:

@IntegrationTest
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {
ContextsApplication.class,
CustomConfiguration.class
})
public class ContextsApplicationWithCustomTests {

在没有启用 Gemfire 的情况下,测试可以顺利运行。

但是,配置 Gemfire 会导致上下文加载器抛出 IllegalArgumentException 的问题:

Caused by: java.lang.IllegalArgumentException: 
a beanFactoryReference already exists for key cacheFactoryBean

完整的输出包含在存储库中的文件 mvn-clean-install.txt 中。

当两个测试单独运行时,它们会起作用。只有当它们一起运行时才会出现问题。我怀疑 Spring Boot 运行的 Gemfire 实例导致两个测试之间出现某种溢出,从而导致上下文无法正确隔离。不幸的是,我不知道如何影响这一点。

最佳答案

您还可以尝试 CacheFactoryBean.setUseBeanFactoryLocator(false)

关于java - 如何使用 Gemfire 和多个 Spring 应用程序配置在 Spring Boot 中执行集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33240714/

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