Android Studio с модулем библиотеки Java Не удается загрузить тестовые ресурсы

У меня есть проект Android Studio с внутренним модулем библиотеки Java, который имеет тесты с тестовыми ресурсами. Но когда я запускаю тесты, я не могу получить артефакты. Это, кажется, отлично работает в чистом проекте java gradle (по крайней мере, в затмении).

Значение Для java-плагина:

src/main/java
src/main/test
src/test/java
src/test/resources

В каталоге ресурсов у меня есть файл crt, который я хочу загрузить в моем тесте junit. При использовании любой команды, с которой я столкнулся, она возвращает null для ресурса. Однако я подтвердил, что ресурсы находятся в папке сборки.

Некоторые вещи, которые я пробовал:

getClass().getClassLoader().getResourceAsStream("cert_format_der.crt").read(); // NPE
getClass().getClassLoader().getResourceAsStream("/cert_format_der.crt").read(); // NPE
getClass().getClassLoader().getSystemResourceAsStream("/cert_format_der.crt").read(); // NPE

Спасибо

Ответ 1

Оказывается, это похоже на ошибку с Intellij и как Gradle не правильно устанавливает каталог ресурсов для тестовых источников.

Добавление этого в build.gradle для модуля Исправляет его:

sourceSets {
   test {
      output.resourcesDir = output.classesDir
   }
}

Ответ 2

Вместо того, чтобы расходовать ресурсы в выходной каталог класса - как предложено nibbuen, также можно не трогать выходной каталог и явно добавлять его как зависимость.

dependencies {
  runtime files(sourceSets.test.output.resourcesDir)
}