2015-06-05 4 views
2

У меня есть проект IntelliJ IDEA в Scala и начал добавлять тесты org.specs2. У меня возникли проблемы с поиском, как добавить файл application.conf, который будет использоваться в тестах.Как указать различные application.conf для тестов specs2?

Я пытался делать следующее:

test 
    resources 
     application.conf 
    scala 
     mypackage.myname 
      MyTestSpec 

тогда называли

ConfigFactory.load() 

в MyTestSpec. Ничего не было загружено, однако, ни application.conf из моей папки ресурсов в папке src, ни этой. Моя цель - написать интеграционные тесты против некоторых тестовых сред (давайте не будем обсуждать обоснованность этой цели ...).

Как это сделать или есть лучший способ обойти это? Я начал читать документацию specs2 сегодня, и я довольно новичок в Scala, так что я просто предполагаю, что именно так должны работать тестовые конфигурации.

До сих пор я пытался указать путь -Dconfig.file = my_test_conf_full в конфигурации сборки для тестов (из меню Build/Configurations ... в IntelliJ), однако это не имело никакого значения.

спасибо.

+0

Вы можете передать строку с путем к файлу ресурсов, а «ConfigFactory» загрузит файл из файловой системы, а не с помощью класса погрузчик. Вы также можете создавать свои собственные конфиги, используя 'ConfigValueFactory'. Я успешно использовал его для тестирования, но последнее тоже выглядит интересным. –

ответ

0

Вы можете передать строку с указанием пути к файлу ресурсов, а «ConfigFactory» будет загружать файл из файловой системы, а не использовать загрузчик классов. См. overview.

Вы также можете создать свои собственные конфигурации, используя ConfigValueFactory. См. ConfigValueFactory.

Я успешно использовал его для тестирования, но последнее тоже выглядит интересным.

+0

Спасибо; Я пробовал это, ConfigFactory.load («мой тестовый путь»), однако это не сработало. В возвращаемом объекте конфигурации не было моих значений. – user2916547

+0

Вам нужно использовать 'ConfigFactory.parse ("/home/BobDalgleish/project1/proj/test/application.conf ")', чтобы сказать ему, чтобы проанализировать путь к файлу. 'load()' просто берет имя файла, загружаемое загрузчиком класса. –

+0

Я использовал метод parseFile, поскольку синтаксический разбор не существует. Это было больше в строках 'val config = ConfigFactory.parseFile (новый файл («/home/cn/IdeaProjects/рекомендация-интеграция/src/test/resources/application.conf »)). Как ни странно, это тоже не помогло. Я проверил и повторно проверил файл в указанном месте. – user2916547

2

Если вы создали конфигурацию для тестирования в меню Run/Debug:

Предполагая, что ваш файл test.conf находится в главном каталоге конфа, вы можете использовать этот «-Dconfig.resource = тест .conf».

Если вы хотите сохранить его в тесте/ресурсах, это будет «-Dconfig.resource = resources/test.conf».

В меню конфигурации JUnit добавьте строку в «Параметры VM».

В меню конфигурации Specs2 добавьте строку в «Параметры VM».

0

Вы можете добавить application.conf в IntelliJ через Настройки проекта:

Файл - Структура проекта - Модули - Источники - выберите папку (например, SRC/RESSOURCES) -> Отметить: Нажмите Ресурсы

папка ressources добавляется в панель справа. Сейчас такие вещи, как

import com.typesafe.config.ConfigFactory 
val value = ConfigFactory.load().getString("my.secret.value") // or 
val db = Database.forConfig("h2mem1") 

начать работать.

1

Использование SBT

Поместите свой пользовательский файл конфигурации на src/test/resources/application.test.conf.

Затем добавьте это к вашему build.sbt:

// When running tests, we use this configuration 
javaOptions in Test += s"-Dconfig.file=${sourceDirectory.value}/test/resources/application.test.conf", 
// We need to fork a JVM process when testing so the Java options above are applied 
fork in Test := true, 
Смежные вопросы