我有一个Java Springboot应用程序,该应用程序在主软件包中使用PostgreSQL数据库,并且最近我已将单元测试切换为使用内存中的H2数据库,以消除对PostgreSQL的依赖。
这一切在本地都可以正常运行,但是在CircleCi中运行此代码时,它似乎仍然尝试使用PostgreSQL,导致我的所有测试失败。
这是我的CircleCi配置:
version: 2
jobs:
build:
docker:
- image: circleci/openjdk:11.0.3-jdk-stretch
working_directory: ~/repo
environment:
JVM_OPTS: "-Xmx3200m"
GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dorg.gradle.workers.max=2"
steps:
- checkout
- restore_cache:
keys:
- v2-dependencies-{{ checksum "build.gradle" }}
- v1-dependencies-
- run: gradle dependencies
- save_cache:
paths:
- ~/.gradle
key: v2-dependencies-{{ checksum "build.gradle" }}
- run: gradle test
application.properties文件:
spring.datasource.url=jdbc:postgresql://localhost:5432/absences
spring.datasource.username= admin
spring.datasource.password= admin
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
和test-application.properties文件:
jdbc.driverClassName=org.h2.Driver
jdbc.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1
hibernate.dialect=org.hibernate.dialect.H2Dialect
hibernate.hbm2ddl.auto=create
此外,我已将测试类切换为使用测试属性文件:
@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource(locations = {"classpath:test-application.properties"})
public class AbsenceServiceImplTests {
以下是失败的构建的链接:https://circleci.com/gh/skunkwerksuk/timekeeper-absences/36
如果您想了解更多信息,这里是代码存储库的链接:https://github.com/skunkwerksuk/timekeeper-absences/tree/test-db-fix
对此有任何帮助,我已经查看了CircleCi上的许多文档和论坛,似乎没有人对此问题有任何答案。