在springboot集成测试中,如何在jpa/hibernate之前强制bean创建测试服务



我正在为启用spring-data jpa的应用程序设置SpringBootTest。我们正在尝试使用Redis/Reddison设置二级缓存,hibernate被配置为在其属性中使用RedisRegionFactory。

在我们的集成测试中,我们希望使用我们在TestConfiguration类中配置的RedisServer bean来启动本地Redis实例。当测试启动时,由于Hibernbate首先启动,RedisRegionFactory实例由于RedisServer尚未启动而运行到死IP连接,因此测试失败,并出现bean创建异常。

我们尝试了一些技巧来首先加载TestConfiguration类及其bean,比如添加@Order注释。但在调试中,我们发现在hibernate启动之前,配置bean没有被触碰。我们并不想在这里重新定义自动配置的bean,有没有其他方法可以强制SpringBootTest在JPA之前加载bean?

我看不出有什么方法可以做到这一点,而不接触Spring Boot当前自动配置的任何东西。

您可以手动配置失败的bean,并添加额外的依赖项,例如,如果Redis可用,则使用@DependsOn对进行构造检查的bean进行配置,因此bean的构造仅在之后继续。

相关内容

  • 没有找到相关文章