Intereting Posts
Ошибка внедрения GoogleApiClient Builder для разработки Android Андроид студия новый проект отсутствует папки Как удалить вкладку с панелью действий, viewpager и несколькими фрагментами? Инструмент Android Systrace внутренне использует strace или ftrace? Преобразование параметризованных Enum в перечисляемую аннотацию в android Изменить цвет текста в TextView в фокусе и щелкнуть? Android: невозможно получить кликабельный заголовок / нижний колонтитул ListView Как загрузить ImageView из файла png? Компилировать код NDK с помощью gnu libstdc ++ Как создать проект андроида с градиентом из командной строки? Невозможно получить высокую частоту кадров (кадров в секунду) (около 30 кадров в секунду) при записи с передней камеры в приложении для Android Какой вес является исходным подшипником в возврате из Location.distanceBetween () Можно ли выполнить строку кода Java во время выполнения в Android? Android – Как сделать фоновый рисунок, объединяющий растровые изображения? Элементы меню не отображаются на панели действий

Файл доступа в тесте JUnit в среде Gradle

Прямо сейчас у меня есть библиотека Java, которая имеет тестовый класс. В этом классе я хочу получить доступ к некоторым файлам, расположенным на моем жестком диске.

Файл build.gradle выглядит так:

apply plugin: 'java' dependencies { testCompile 'junit:junit:4.11' } 

Мой файл находится под java_lib/src/test/assets/file.xml а класс Java находится под java_lib/src/test/java/<package_name>.java

Поэтому я выполняю

final InputStream resourceAsStream = this.getClass().getResourceAsStream("assets/file.xml");

К сожалению, я возвращаюсь обратно. Что я делаю не так?

Solutions Collecting From Web of "Файл доступа в тесте JUnit в среде Gradle"

Чтобы ускорить работу, вам нужно добавить следующее в файл градиента:

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

В основном это копирование всех файлов в каталоге src/test/resource для build/classes/test , поскольку this.getClass().getClassLoader().getResourceAsStream(".") на build/classes/test .

Проблема уже известна Google, и они хотят исправить ее в Android Studio 1.2 (так как для этого нужен IntelliJ14, и похоже, что она будет включена в Android Studio 1.2)

Попробуйте поместить file.xml в src/test/resources и использовать this.getClass().getResourceAsStream("file.xml") (без префикса папки)

Проблема заключается в том, что папка с assets не является частью пути к тестовому исполнению, поэтому this.getClass().getResourceAsStream("assets/file.xml") не сможет разрешить путь, как вы ожидали.

По умолчанию папка тестовых ресурсов в Java-проекте Gradle представляет собой src/test/resources (то же, что и проект Maven java). Вы можете переопределить его в папку с assets если хотите, добавив это в файл build.gradle проекта:

 sourceSets.test { resources.srcDirs = ["src/test/assets"] } 

В build.gradle добавьте следующее:

 sourceSets.test { resources.srcDirs = ["src/test"] } 

В своем коде получите доступ к вашему ресурсу следующим образом:

 getClass().getClassLoader().getResourceAsStream("assets/file.xml")); 

Работает на меня.

Спасибо, что указали на проблему Google, которую я искал весь день для этого …

В «Android Studio 1.1 RC 1» (инструмент построения градиента 1.1.0-rc1) нет необходимости добавлять работу в файл градиента, но вы должны выполнить тест из меню задачи градации (или командной строки) !