【发布时间】:2017-06-14 10:17:01
【问题描述】:
我正在开发一个使用 Spring JPA 和 PostgreSQL 的 Spring Boot 应用程序。我正在使用@SpringBootTest(classes = <my package>.Application.class) 为控制器类初始化单元测试。
问题是这导致entityManagerFactory bean(以及许多其他与jpa、数据源、jdbc 等相关的对象)被创建,这对于单元测试来说是不需要的。有没有办法阻止 Spring 在第一次实际使用它们之前自动创建这些对象?
我花了很多时间试图只加载我的单元测试所需的 bean,但遇到了很多错误。我对 Spring 比较陌生,我希望其他人之前遇到过这个问题......并且可以提供帮助。如果需要,我可以发布代码 sn-ps。
更新:我不确定是否应该编辑或回答我自己的问题...选择编辑,因为我最终改变了我的单元测试方法。我将此添加到我的测试配置类中。
@Configuration
@ComponentScan(basePackages = {"api.controller", "api.config", "api.utils"})
public class TestControllerConfig {
}
然后我模拟了服务和存储库类。
【问题讨论】:
-
如果是单元测试,则不需要
@SpringBootTest,否则它是集成测试,您需要完整的上下文。
标签: java spring unit-testing spring-boot spring-boot-test