Spring Boot:Integration Test不排除我的Application配置类

时间:2015-06-23 18:08:46

标签: java spring-boot

我有一个应用程序连接到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配置类。

1 个答案:

答案 0 :(得分:1)

你的AopConfig类实际上是一个自动配置类吗?通过在META-INF中的spring.factories文件中命名它们来加载自动配置类。 exclude属性仅适用于我认为的那些人。无论如何,在常规应用程序配置之后都会进行自动配置。

您的配置中还有@ComponentScan。如果你真的需要排除AopConfig作为注释,我希望它能够开启。

虽然恕我直言,但在测试中进行组件扫描似乎并不合适