![](/img/trans.png)
[英]Spring Boot sperate @Configurations for multiple application contexts
[英]How to perform integration testing in Spring Boot with Gemfire and multiple Spring Application Configurations?
我正在尝试运行一个具有与其他集成测试不同的SpringApplicationConfiguration
的集成测试。 仅当配置了Gemfire时,该问题才会显现。
该错误的演示可在此处获取: https : //github.com/kemitix/test-spring-boot-gemfire-testing
有两个测试类ContextsApplicationTests
和ContextsApplicationWithCustomTests
。
第一种使用基于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
中的文件mvn-clean-install.txt
中。
当两个测试单独运行时,它们将起作用。 仅当它们一起运行时,问题才出现。 我怀疑Spring Boot正在运行的Gemfire实例在两个测试之间导致某种形式的流血,这导致无法正确隔离上下文。 不幸的是,我不知道如何影响这一点。
您也可以尝试CacheFactoryBean.setUseBeanFactoryLocator(false)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.