【问题标题】:Spring boot tests failing - Unable to read environment variablesSpring Boot 测试失败 - 无法读取环境变量
【发布时间】:2022-02-03 03:19:11
【问题描述】:

由于spring boot 测试失败,我无法构建spring boot 应用程序。我没有包括任何测试。 spring boot 创建了一个用@SpringBootTest 注释的测试类。当我在application.properties 中有数据库配置时,它工作正常。我删除了硬编码的值并将其添加为 intelliJ 中的环境变量并使用了占位符,例如:

spring.datasource.url=jdbc:postgresql://${DB_HOST:dbhost}:${DB_PORT:5432}/${DB_NAME}

我尝试使用@PropertySource("classpath:application.properties"),但没有成功。

应用程序在从 IntelliJ 启动时无任何异常启动。问题仅在于运行 mvn clean install 时测试失败。

例外

Caused by: org.postgresql.util.PSQLException: The connection attempt failed.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:315)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:225)
    at org.postgresql.Driver.makeConnection(Driver.java:465)
    at org.postgresql.Driver.connect(Driver.java:264)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
    at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
    ... 120 common frames omitted
Caused by: java.net.UnknownHostException: dbhost

【问题讨论】:

  • 为什么将变量定义为key:pair 值定义为${DB_HOST:dbhost} 而不是这样的${DB_HOST}
  • @HarryCoder 是对的。检查 ${DB_NAME} 是否与您的 postgresql 数据库名称匹配?
  • 能否请您显示您的environment variables 有问题
  • dbhost 是一个占位符值,如果没有给定环境变量,Spring boot 会选择该值

标签: java spring spring-boot


【解决方案1】:

通过在命令提示符下运行 .bat 文件解决了该问题。该文件设置环境变量。在 cmd 中运行 mvn clean install 时测试通过。

【讨论】:

    猜你喜欢
    • 2017-12-01
    • 2020-05-05
    • 2018-04-12
    • 2019-08-03
    • 2018-06-10
    • 2021-11-22
    • 2017-05-17
    • 2019-11-21
    • 2020-01-18
    相关资源
    最近更新 更多