Подтвердить что ты не робот

IntelliJ не может найти ресурс тестирования classpath

У меня возникла проблема, когда IntelliJ 13.1.4 при запуске unit test не может найти файл ServiceLoader в каталоге src/test/resources моего модуля.

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

  • Модуль представляет собой проект Gradle, и если я запустил gradle test, unit test работает нормально.
  • Я успешно использовал этот unit test в IntelliJ в прошлом, и он нашел модуль. (Возможно, более ранняя версия IntelliJ?)
  • Я дважды проверял параметры модуля IntelliJ, а каталог src/test/resources помечен как каталог тестовых ресурсов. (См. Снимок экрана ниже.)
  • Я сбрасываю класс класса classloader класса unit test класса; он имеет каталоги build/classes/test/ и build/classes/java, но ни build/resources/test/, ни build/resources/main/.
  • Я нажал кнопку, чтобы обновить все проекты Gradle.

Любые идеи о том, что еще может привести к тому, что IntelliJ потерпит неудачу здесь?


Снимок экрана конфигурации моего модуля, показывающий настройки тестовых ресурсов.

My Test Resource Folders is correctly set.

4b9b3361

Ответ 1

Мне удалось улучшить работу, создав каталог test-resources, параллельный директории test (!).

Тем не менее, все еще видят проблемы с этим. В те времена можно было бы открыть настройки проекта IntelliJ и определить тестовые ресурсы как источник (проект Gradle останется без изменений).

Должен быть ошибкой IntelliJ, так как я испытал то же самое в Android Studio.

EDIT:

I нашел обходное решение в этой проблеме.

Добавьте следующее в конец конфигурации Gradle (и укажите путь к тестовым ресурсам):

task copyTestResources(type: Copy) {
    from "${projectDir}/src/test/resources"
    into "${buildDir}/classes/test"
}
processTestResources.dependsOn copyTestResources

Ответ 2

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

Одним из способов является добавление требуемой папки в качестве зависимости для модуля в настройках модуля.

введите описание изображения здесь

Сначала нажмите кнопку "+", чтобы добавить новую зависимость.

введите описание изображения здесь

Затем выберите папку, которую вы хотите добавить в путь к классам.

введите описание изображения здесь

Затем выберите опцию "classes".

введите описание изображения здесь

Как только это будет сделано, перестройте свой модуль один раз и, надеюсь, это должно сделать трюк.

В идеале это не должно быть проблемой. Все файлы в папке ресурсов должны быть непосредственно помещены в путь к классам. Однако в каждой среде IDE есть свои причуды.