无法通过Gitlab CI进行测试

时间:2018-08-17 20:39:40

标签: activejdbc activeweb

我一直在尝试让我们的测试通过我们的Gitlab CI,但不能。我正在使用Gitlab随附的库存管道配置。我要做的就是提供gitlab yaml文件来配置CI。

这就是我们正在使用的

image: maven:3.5.0-jdk-8-alpine

services:
  - postgres:latest

variables:
  POSTGRES_DB: my_test_db
  POSTGRES_USER: my_test_user
  POSTGRES_PASSWORD: ""
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
  ACTIVE_ENV: test

connect:
  image: postgres
  script:
  # official way to provide password to psql: http://www.postgresql.org/docs/9.3/static/libpq-envars.html
  - export PGPASSWORD=$POSTGRES_PASSWORD
  - psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "SELECT 'OK' AS status;"

stages:
  - test

test:
  stage: test
  script:
    - "mvn -Denvironments=test -B db-migrator:migrate; mvn -Denvironments=test -DACTIVE_ENV=test -B test"

一切正常,直到测试运行为止。然后它们都因类似的消息而出错:

383 [main] WARN org.javalite.activeweb.DBSpecHelper - no DB connections are configured, none opened
456 [main] WARN org.javalite.activeweb.DBSpecHelper - no DB connections are configured, none opened
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.528 sec <<< FAILURE! - in app.models.RoleTest
validatePresenceOfUsers(app.models.RoleTest)  Time elapsed: 0.071 sec  <<< ERROR!
org.javalite.activejdbc.DBException: Failed to retrieve metadata from DB, connection: 'default' is not available

我有一个database.properties文件已签入并且仅用于测试(我们的dev和prod envs使用jndi)。看起来像这样:

test.driver=org.postgresql.Driver
test.username=my_test_user
test.password=
test.url=jdbc:postgresql://postgres/edv_test

同样,迁移使用所有完全相同的配置运行。我只是不知道为什么测试无法运行。我明白为什么说没有默认数据库,但是我不明白为什么它没有看到测试设置并没有按预期配置该连接。

1 个答案:

答案 0 :(得分:0)

因此,您知道Maven标志environments如下:mvn test -Denvironments=test仅适用于DB-Migrator,不适用于测试。在标准运行模式下或作为测试的任何JavaLite应用程序都将查看ACTIVE_ENV。如果未设置,它将假设development。在测试模式下,它将像http://javalite.io/database_configuration#property-file-configuration一样查看database.propertiesdevelopment.test.xxx=yyy。 可以将其视为“开发”环境,“测试”模式。

此外,DbConfig不参与测试,因为测试中的数据库连接具有特殊处理(回滚事务),请参阅:http://javalite.io/testing_with_db_connection