我想使用 @WebMvcTest
测试我的 Controller 并模拟依赖项,但 Spring Boot 的 AutoConfiguration 会自动加载我的 Couchbase(Spring Data)配置。 Couchbase 在某些运行测试的平台上不可用,因此 Test 类将抛出异常。如何从 AutoConfiguration 机制中排除某些类?
我试过 excludeFilters
@WebMvcTest
的选项和 @ActiveProfile
加载另一个应用程序上下文,但这不起作用。
测试配置:
@RunWith(SpringRunner.class)
@WebMvcTest(value = ExchangeJobImportController.class, excludeFilters = @ComponentScan.Filter(classes = CouchbaseConfiguration.class))
@ActiveProfiles("test")
public class ExchangeJobImportControllerTest {
...
}
沙发床配置:
@Configuration
@EnableCouchbaseAuditing
@EnableConfigurationProperties({CouchbaseProperties.class})
@EnableCouchbaseRepositories(basePackages = "com....")
public class CouchbaseConfiguration extends AbstractCouchbaseConfiguration {
...
}
最佳答案
经过一番挣扎后,我找到了解决方案:排除 @SpringBootApplication
@WebMvcTest
中的注释类注解:
@RunWith(SpringRunner.class)
@WebMvcTest(value = ExchangeJobImportController.class, excludeAutoConfiguration = Application.class, secure = false)
@ActiveProfiles("localhost")
public class ExchangeJobImportControllerTest {
...
}
为了记录,我使用的是 Spring Boot 1.5.1.RELEASE
关于spring - 使用@WebMvcTest 时如何排除使用 Spring 的 AutoConfiguration 添加的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42433487/