Используя активы в тестах robolectric
В моих роболектрических тестах я пытаюсь прочитать файл. Поскольку этот файл содержит только тестовые данные, я поместил его в активы тестов.
Структура каталогов выглядит следующим образом.src/main/assets/prod_data_file
src/test/assets/test_data_file
Однако, когда я пытаюсь прочитать файл по getShadowApplication().getAssets().open(MY_FILE_PATH)
, он дает мне FileNotFoundException
.
Кто-нибудь знает, как это исправить?
2 ответа:
Поскольку мои тесты просто читают эти файлы и возвращают данные файла в виде
Я просто переместил свои файлы тестовых данных вString
, я смог сделать это черезgetClass().getClassLoader().getResourceAsStream(MY_FILE_PATH)
, а затем прочитать файл. На самом деле не нужно читать, чтобы использоватьgetShadowApplication().getAssets().open(MY_FILE_PATH)
.src/test/resources
, и это сработало. :)
Я смог сделать это так:
1) копировать (или создавать) AndroidManifest.xml в тестовой папке2) Добавить
@Config(emulateSdk = 18, manifest = "src/test/AndroidManifest.xml")
для данного конкретного тестаЯ смог прочитать файл. Это значит, что вы можете играть с классом
AndroidManifest
и пользовательским бегуном (больше вдохновения здесь https://groups.google.com/forum/#! topic / robolectric/YvbdqRFcdnA )Я думаю, что можно было бы также поиграть с
build.gradle
:android { sourceSets { androidTest.setRoot( 'src/test' ) androidTest { assets.srcDir file( 'src/test/assets' ) } } }
Но я не уверен, так как плагин не создает никакого варианта сборки но только задачи.