You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot测试Maven构建报jdbcUrl is required with driverClassName错误如何解决

错误触发原因
  1. 自定义数据源未被Spring容器识别:你编写的MyDataSourceCfg配置类中,数据源创建方法appDataSource是private私有访问权限,且未添加@Bean注解,Spring无法扫描、实例化该数据源并注入到上下文。
  2. Quartz依赖触发数据源校验:你的项目引入了quartz-scheduler依赖,Quartz默认会尝试加载数据源来持久化调度任务;你在测试类中排除了Spring Boot默认的数据源自动配置,又没有可用的自定义数据源,Quartz自动配置会尝试初始化Hikari连接池,但缺少必要的jdbcUrl配置,最终抛出该错误。
  3. 代码存在语法疏漏:数据源构建代码中env.getProperty("url")、env.getProperty("password")两行末尾缺少右括号,也会导致配置加载异常。
解决方案

你可以根据自己的测试需求选择以下任意一种方案:

方案1:修复自定义数据源配置(适用需要使用数据库+Quartz持久化的场景)

修改MyDataSourceCfg类,给数据源方法添加@Bean、@Primary注解,调整访问权限为public,补全代码括号:

@Configuration
public class MyDataSourceCfg {
    // 注入环境变量对象,原有代码缺少这行也会导致env为空
    @Autowired
    private Environment env;

    @Bean
    @Primary
    public DataSource appDataSource() {
        return DataSourceBuilder.create()
              .driverClassName("org.postgresql.Driver")
              .url(env.getProperty("url"))
              .username(env.getProperty("user"))
              .password(env.getProperty("password"))
              .build();
    }
}

方案2:测试类排除Quartz自动配置(适用测试不需要用到Quartz功能的场景)

修改测试类的@EnableAutoConfiguration注解,添加Quartz自动配置排除项,避免Quartz去加载数据源:

@EnableAutoConfiguration(exclude = { 
    DataSourceAutoConfiguration.class,
    DataSourceTransactionManagerAutoConfiguration.class, 
    HibernateJpaAutoConfiguration.class,
    QuartzAutoConfiguration.class 
})

方案3:配置Quartz使用内存存储(适用测试需要Quartz但不需要持久化调度任务的场景)

在测试资源目录下的application.properties或application.yml中添加如下配置,让Quartz使用内存存储任务,无需加载数据源:

spring.quartz.job-store-type=memory

内容的提问来源于stack exchange,提问作者continuousLearner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:27:03