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

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

我想使用 @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/

相关文章:

java - 如何使用 Repository Hibernate 和 Pageable 与 Java Spring 进行参数搜索?

Java/Spring-Boot Web 应用程序不提供公共(public)资源目录中的 Assets

javascript - 单元测试 Angular 指令点击处理程序

c# - 在 C# 中使用 Moq 设置索引器

spring-mvc - 使用带 HTTPS 的 Tomcat 时,浏览器地址栏中显示端口号 8443

java - 在名称为“的 DispatcherServlet 中找不到具有 URI [] 的 HTTP 请求的映射

xml - 从 .properties 文件读取参数到 .xml 文件

java - 在 Maven 编译项目中使用 Spring AOP 获取 "No factory method ' aspectOf( )'"发现异常

python - 如何在 Python 中正确使用 coverage.py?

Java 客户端调用 jar 文件中的算法,该文件是 Java Spring 中 Web 界面的一部分