我正在使用Spring JPA
与PostgreSQL
一起使用的Spring启动应用程序。我正在使用@SpringBootTest(classes = <my package>.Application.class)
初始化控制器类的单元测试。
问题在于这会导致创建entityManagerFactory
bean(以及与jpa,datasource,jdbc等相关的许多其他对象),单元测试不需要这些对象。有没有办法阻止Spring自动创建这些对象,直到第一次实际使用它们为止?
我花了很多时间尝试仅加载我单元测试所需的bean但遇到了很多错误。我对Spring比较陌生,我希望别人之前碰到过这个......并且可以提供帮助。如果需要,我可以发布代码片段。
更新:我不确定是否应该编辑或回答我自己的问题...选择编辑,因为我最终改变了我的单元测试方法。我把它添加到我的测试配置类中。
@Configuration
@ComponentScan(basePackages = {"api.controller", "api.config", "api.utils"})
public class TestControllerConfig {
}
我嘲笑了服务和存储库类。
答案 0 :(得分:5)
您可disable auto configuration in spring-boot使用exclude
的{{1}}属性,如下所示:
@EnableAutoConfiguration
来自@Configuration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class TestConfig {
}
文档:
如果类不在类路径中,则可以使用注释的 @EnableAutoConfiguration
属性,并指定完全限定名称。最后,您还可以通过 excludeName
属性控制要排除的自动配置类列表。