Не удается сдать тесты на Gitlab CI

Я пытался заставить наши тесты пройти наш 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 и prov используют jndi). Это выглядит так:

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

Опять же, миграции выполняются с использованием всех этих одинаковых настроек. Я просто не могу понять, почему тесты не запускаются. Я понимаю, почему он говорит, что нет базы данных по умолчанию, но я не понимаю, почему он не видит настройки теста и не настраивает это соединение должным образом.

1 ответ

Решение

Итак, вы знаете, флаг Maven environments как это: mvn test -Denvironments=test работает только для DB-Migrator, а не для тестов. Любое приложение JavaLite в стандартном режиме работы или в качестве теста, оно будет смотреть на ACTIVE_ENV, Если это не установлено, он будет предполагать development, В тестовом режиме он будет смотреть на database.properties блок development.test.xxx=yyy как в http://javalite.io/database_configuration. Думайте об этом как о среде разработки, режиме тестирования.

Дополнительно, DbConfig не участвует в тестах, поскольку соединения с базой данных в тесте имеют особую обработку (транзакции отката), см. http://javalite.io/testing_with_db_connection

Другие вопросы по тегам