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

时间:2015-10-20 15:28:53

标签: java spring spring-boot integration-testing gemfire

我正在尝试运行与其他集成测试具有不同SpringApplicationConfiguration的集成测试。该问题仅在配置Gemfire时显现。

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

有两个测试类ContextsApplicationTestsContextsApplicationWithCustomTests

第一个使用基于SpringApplicationConfiguration类的标准ContextsApplication。另一个尝试还包括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实例导致两个测试之间出现某种流失,导致上下文无法正确隔离。不幸的是,我不知道如何影响这一点。

1 个答案:

答案 0 :(得分:1)

你也可以试试CacheFactoryBean.setUseBeanFactoryLocator(false)