Я хотел бы добавить этап тестирования интеграции в мое приложение SBT + Spray.
В идеале это было бы точно так же, как Maven, со следующими фазами:
-
compile
: приложение построено -
test
: выполняются модульные тесты -
pre-integration-test
: приложение запускается в отдельном процессе -
integration-test
: выполняются тесты интеграции; они выдают запросы к приложению, работающему в фоновом режиме, и проверяют, что возвращаются правильные результаты. -
post-integration-test
: экземпляр ранее запущенного приложения отключен
У меня много проблем с тем, чтобы это работало. Есть ли обработанный пример, которым я могу следовать?
1) Разделите "it" codebase:
Я начал с добавления кода, показанного в "Тестирование интеграции" в документах SBT, в новый файл в project/Build.scala
.
Это позволило мне добавить некоторые интеграционные тесты в разделе "src/it/ scala" и запустить их с помощью "sbt it: test", но я не вижу, как добавить тэг pre-integration-test
.
Вопрос " "Задача" повторного запуска" автоматически запускается до него: test ", похоже, относится к тому, как настроить такой крючок, но ответ doesn ' t для меня (см. мой комментарий там).
Кроме того, добавление вышеуказанного кода в мою сборку build.scala остановило задачу "sbt re-start" от работы вообще: она пытается запустить приложение в режиме "it", а не в режиме "по умолчанию".
2) Тесты интеграции в тестовой кодовой базе:
Я использую IntelliJ, и отдельная "его" кодовая база действительно смутила его. Он не может скомпилировать какой-либо код в этом каталоге, поскольку он считает, что все зависимости отсутствуют.
Я попытался вставить вместо этого код из Дополнительные тестовые конфигурации с общими источниками" из документов SBT, но я получаю ошибку компиляции
[error] E:\Work\myproject\project\Build.scala:14: not found: value testOptions
[error] testOptions in Test := Seq(Tests.Filter(unitFilter)),
Есть ли обработанный пример, который я могу выполнить?
Я рассматриваю возможность отказаться от настройки этого метода через SBT и вместо этого добавить тестовый флаг, чтобы пометить тесты как "интеграцию" и написать внешний script для обработки этого.