Intereting Posts
Учебники для OpenSL ES для Android AnalyticsService, не зарегистрированная в манифесте приложения – ошибка Как указать несколько исходных папок в build.properties при использовании ant для сборки проектов Android? Android BluetoothGatt – статус 133 – регистрация обратного вызова OutOfMemoryError при компиляции моего приложения для Android с градиентом Как создать прогрессивное изображение JPEG на Android Android загружает видео на удаленный сервер, используя данные мультиплексора HTTP Замена фрагмента сама по себе ничего не показывает Форматирование описания приложения Google Play Galaxy S3 – съемка в портретном режиме разрушает активность Android Overriding onBackPressed () Как реализовать пакет NumberPicker в Android API 7? Отмена выбора RadioButton – альтернативный метод Предназначение для редактирования текстового файла с установленным редактором файлов (если есть) Почему информационное окно маркера не отображается?

Файл доступа в тесте 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) нет необходимости добавлять работу в файл градиента, но вы должны выполнить тест из меню задачи градации (или командной строки) !