Рабочий каталог по умолчанию для ScalaTest с иерархическими проектами Gradle в IntelliJ

Я разрабатываю проект Scala в IntelliJ IDEA (репозиторий GitHub). Проект создан с помощью Gradle 4.3 и использует ScalaTest плюс последний подключаемый модуль Gradle для тестирования (id 'com.github.maiflai.scalatest' version '0.19'). Версия плагина Scala — 2017.3.11.1.

Проект имеет два уровня иерархии: родительский проект на корневом уровне и подпроекты в качестве дочерних. В тестах используются входные файлы, расположенные на корневом уровне (например, проект каталога ./compiler/ использует файлы из каталога ./queries/). Тесты относятся к файлам с относительными путями: например, если компилятор использует файлы запросов, он обращается к ним как ../queries/query-file.ext.

С такой настройкой тесты нормально работают из командной строки при запуске ./gradlew test. Однако, когда я запускаю новую тестовую форму IntelliJ, рабочий каталог всегда устанавливается на корневой уровень, что прерывает тесты. (Конечно, это можно исправить вручную, но это нужно делать для каждого выполненного теста). Обратите внимание, что я импортировал проект в IntelliJ IDEA, используя параметр «Создать отдельный модуль для каждого исходного набора» (из-за проблема SCL-12718, которая еще не исправлена ​​в стабильной версии, и я не уверен, решит ли это проблему).

Есть ли способ исправить или обойти это? Обновление конфигурации ScalaTest Gradle для использования каталога текущего подпроекта или перенастройка IntelliJ для использования каталога родительского проекта будет работать для меня.


person Gabor Szarnyas    schedule 17.02.2018    source источник


Ответы (1)


Вы можете изменить рабочий каталог по умолчанию для тестов в IntelliJ, выполнив следующие действия:

  1. Откройте «Выполнить» -> «Редактировать конфигурации»…
  2. Разверните раздел «По умолчанию» в левой панели, выберите пункт «Scala Test».
  3. Задайте поле «Рабочий каталог»

Вероятно, было бы лучше изменить тесты, чтобы не полагаться на рабочий каталог. Если вы обращаетесь к файлам «запросов» как к ресурсам JVM, а не открываете их по относительному пути, это должно работать в обеих средах. См. Как загрузить файл из папки ресурсов?

person Rich    schedule 21.02.2018
comment
Спасибо, это работает, и это именно тот обходной путь, который я искал. - person Gabor Szarnyas; 21.02.2018