当前位置: 首页 > 知识库问答 >
问题:

SpringBoot测试上下文未加载:Flyway和SpringBootData/Hibernate

堵飞鸿
2023-03-14

运行默认Spring Boot单元测试时:

@SpringBootTest
class DemoH2FlywayApplicationTests {
    @Test
    void contextLoads() {
    }
}

我收到此错误:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in class path resource 

我正在运行Spring Boot 2.6.2,使用Flyway和H2,以及这些依赖项:

spring-boot-starter-data-jdbc
spring-boot-starter-data-jpa
spring-boot-starter-web
flyway-core
spring-boot-devtools
h2
lombok
spring-boot-starter-test

这是演示项目:https://github.com/filip194/demo-h2-flyway/.

我不确定,也不是专家,但也许与Hibernate有一些关联,我无法理解。我试图为H2创建application.properties的测试资源文件夹,与主资源中的相同,但没有任何变化。

有人能帮忙吗?

共有2个答案

姜钧
2023-03-14

我在Intellij IDEA 2019.3.3(Java 14)和Maven终端上启动了您的项目。测试已成功完成,并创建了上下文。

尝试使用Maven终端运行您的项目:mvn净istall。如果缺少maven,请将其安装在您的操作系统中。

如果一切都成功了,那么问题可能出在Intellij IDEA中。

解修然
2023-03-14

你的问题的答案在这里有更详细的解释。

application.properties文件中的以下行有错误。

spring.flyway.baseline-on-migrate=true
spring.flyway.validate-on-migrate: false

在第二行中,您应该写=而不是:

 类似资料:
  • 嗨,我正试图让spring junit测试用例...我要求加载完整的应用程序上下文。但是,junit测试不会初始化完整的应用程序上下文。 因此,它应该扫描com.test包中的所有spring bean,并将它们加载到Junit TestCase的applicationcontext中。但从大豆的产量来看,它似乎没有做到这一点。

  • 我想不通..出于某种原因,Spring Junit没有将我的bean添加到上下文中。请砰!! 由:org.springframework.beans.factory.nosuchBeanDefinitionException引起:没有类型为“com.api.demo.store.FileStorage”的合格bean可用:需要至少有1个bean作为autowire候选bean。依赖项注释:{@or

  • 我有需要测试的REST服务。该服务具有Spring Security身份验证,我需要在测试或模拟中关闭它。我决定嘲笑它,因为我不能关掉它。我为此编写了,但现在未加载上下文: 在我的主要源代码中,我有一些config类加载了一些其他bean,而it类在我的测试中没有加载,我有一个例外: 我做错了什么?有人能帮我吗?我使用了,但在该版本中,无法工作,因为属性不再存在。

  • 我正在用Cucumber编写验收测试,我想使用H2数据库进行测试。 应用程序测试属性如下所示: 在目录resources/db/migration中,我有一个包含这些脚本的sql文件: 但是当我运行测试时,H2用默认格式创建模式,而不是使用脚本: 如您所见,所有VARCHAR都是使用255大小创建的,而不是真实值。 你能帮我把飞行道和H2整合起来吗? 谢谢!

  • 嗨,我有一个Spring Boot(2.1.6发行版)应用程序,我正在尝试添加一些简单的集成测试到我的应用程序。首先,我创建了一个基础IntegrationTest类,如下所示: 这是我的测试方法: 有什么建议吗?