我有一个应用程序连接到zookeeper以对HBase执行操作。但是,对于Integration Tests,我有一个类来创建内存表,并在不尝试连接到所述zookeeper的情况下执行测试。
我已经按如下方式定义了IntegrationTestAppConfig.class:
@EnableAutoConfiguration(exclude = { AppConfig.class})
@ComponentScan
@Configuration
@EnableAsync
public class IntegrationTestAppConfig{
..... //this is where I create a bean for my HBaseConnectionManager to use my in-memory table environment
}
而且,在我的集成测试课程中,我有以下内容:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = IntegrationTestAppConfig.class)
public class AHCLIManagerIT {
@Test
.....
}
根据我从Spring-boot文档中读到的内容,集成测试类应该使用IntegrationTestAppConfig.class进行应用程序配置。
但是,当我运行Integration Test时,我收到一条错误消息,指出与zookeeper的连接已超时。在堆栈跟踪中,我看到AppConfig.java(我的应用程序配置的主类)中发生错误,它尝试为zookeeper创建一个HBaseConnection。
我不明白为什么我的应用程序没有使用我在注释中定义的App配置类。
答案 0 :(得分:1)
你的AopConfig类实际上是一个自动配置类吗?通过在META-INF中的spring.factories文件中命名它们来加载自动配置类。 exclude属性仅适用于我认为的那些人。无论如何,在常规应用程序配置之后都会进行自动配置。
您的配置中还有@ComponentScan
。如果你真的需要排除AopConfig作为注释,我希望它能够开启。
虽然恕我直言,但在测试中进行组件扫描似乎并不合适