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

jan*_*anb 5 spring unit-testing spring-mvc spring-boot spring-data-couchbase

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

我尝试了andexcludeFilters的选项@WebMvcTest@ActiveProfile,但这不起作用。

测试配置:

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

沙发底座配置:

@Configuration
@EnableCouchbaseAuditing
@EnableConfigurationProperties({CouchbaseProperties.class})
@EnableCouchbaseRepositories(basePackages = "com....")
public class CouchbaseConfiguration extends AbstractCouchbaseConfiguration {
  ...
}
Run Code Online (Sandbox Code Playgroud)

jan*_*anb 1

经过一番努力,我找到了解决方案:排除注释@SpringBootApplication中带注释的类@WebMvcTest

@RunWith(SpringRunner.class)
@WebMvcTest(value = ExchangeJobImportController.class, excludeAutoConfiguration = Application.class, secure = false)
@ActiveProfiles("localhost")
public class ExchangeJobImportControllerTest {
  ...
}
Run Code Online (Sandbox Code Playgroud)

作为记录,我正在使用 Spring Boot 1.5.1.RELEASE