如何在使用@WebMvcTest时排除使用Spring的AutoConfiguration添加的类?

时间:2017-02-24 08:02:02

标签: spring unit-testing spring-mvc spring-boot spring-data-couchbase

我想使用@WebMvcTest测试我的Controller并模拟依赖项,但Spring Boot的AutoConfiguration会自动加载我的Couchbase(Spring Data)配置。在运行测试的某些平台上没有Couchbase,因此Test类将抛出异常。如何从AutoConfiguration机制中排除某些类?

我尝试了excludeFilters@WebMvcTest的{​​{1}}选项来加载另一个应用程序上下文,但这不起作用。

测试配置:

@ActiveProfile

Couchbase配置:

@RunWith(SpringRunner.class)
@WebMvcTest(value = ExchangeJobImportController.class, excludeFilters = @ComponentScan.Filter(classes = CouchbaseConfiguration.class))
@ActiveProfiles("test")
public class ExchangeJobImportControllerTest {
  ...
}

1 个答案:

答案 0 :(得分:0)

我知道已经有一段时间了,但是我想@ComponentScan.Filter解决方案不起作用的原因是,它默认情况下会为classes字段查找注释类型。

因此,在您的情况下,将FilterType设置为ASSIGNABLE_TYPE即可:

@ComponentScan.Filter(
    type = FilterType.ASSIGNABLE_TYPE,
    classes = CouchbaseConfiguration.class
)