gpt4 book ai didi

java - Spring引导无法从 cucumber 测试上下文创建数据源bean

转载 作者:行者123 更新时间:2023-11-29 05:00:23 25 4
gpt4 key购买 nike

在基于 spring boot 的应用程序中运行测试时,spring 无法创建数据源 bean:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$NonEmbeddedConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath.

阅读此错误后我很清楚,我认为 spring 没有读取我位于以下位置的 application.properties 文件:

src/test/resources/application.properties

为了清楚起见,出于特定于应用程序的原因,我不想在运行集成测试时使用内存数据库。

此文件包含:

spring.datasource.url=jdbc:mysql://127.0.2.1:3306/project-test
spring.datasource.username=foo
spring.datasource.password=bar
spring.datasource.driverClassName=org.mariadb.jdbc.Driver

虽然在使用 bootRun 启动应用程序时会读出

src/main/resources/application.properties 

并正确创建数据源。

我的测试基于 cucumber 并开始使用以下类:

@RunWith(Cucumber.class)
public class AcceptanceTests {
}

测试上下文是在 BaseSteps 类上使用以下注释开始的,每个定义 cucumber 测试的类都继承自该类

@WebAppConfiguration
@ContextConfiguration(classes = App.class)

spring 上下文已成功启动,但无法找到我的 application.properties 文件和/或使用它。

最佳答案

我找到了解决方案。

我添加了如下更改的 ContextConfiguration:

@ContextConfiguration(classes = App.class, loader = SpringApplicationContextLoader.class)

关于java - Spring引导无法从 cucumber 测试上下文创建数据源bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32305772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com