Как прочитать файл из активов в тесте

#android #unit-testing #robolectric

#Android #модульное тестирование #robolectric

Вопрос:

Привет, у меня проблема с чтением файла из активов. Каждый раз, когда я получаю исключение NullPointerException. Я использую Roboletric, и у меня есть onBoard.json в папке assets (main/assets/onBoard.json и testAndroid/assets/onBoard.json). Это мой тестовый класс с базовым тестом для открытия файла.

 @RunWith(RobolectricTestRunner.class)
@Config(manifest=Config.NONE)
public class JsonUtilsTest extends Instrumentation {

@Test
public void readAssetsFileInAndroidTestContextTest() throws IOException {

    ShadowApplication application = ShadowApplication.getInstance();
    assertNotNull(application);
    InputStream input = application.getApplicationContext().getAssets().open("onBoard.json");
    assertNotNull(input);
}


@Test
public void strawberryTest() throws Exception {
    InputStream is = this.getClass().getClassLoader().getResourceAsStream("onBoard.json");

}

@Test
public void shouldGetJSONFromAssetTest() throws Exception{
    assertNotNull(RuntimeEnvironment.application); //Getting the application context
    InputStream input = RuntimeEnvironment.application.getAssets().open("onBoard.json");// the file name in asset folder
    assertNotNull(input);
}
}
 

и сообщение журнала:

 java.lang.NullPointerException
at org.robolectric.shadows.ShadowAssetManager.open(ShadowAssetManager.java:179)
at android.content.res.AssetManager.open(AssetManager.java)
...
 

Весь этот метод возвращает исключение NullPointerException! Вот NullPointer InputStream .
Можете ли вы дать мне несколько советов?
Большое вам спасибо.

Комментарии:

1. утверждение папки ?????

2. Извините, я имею в виду assets

3. Есть какие-либо обновления по этому поводу? Вы нашли решение?

Ответ №1:

Я использую этот метод для чтения файла из активов :

 private String readTxt() {
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    int i;
    try {
        AssetManager mngr = getAssets();
        InputStream inputStream = mngr.open("Your file name.json");

        i = inputStream.read();
        while (i != -1) {
            byteArrayOutputStream.write(i);
            i = inputStream.read();
        }
        inputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    Log.e(TAG, byteArrayOutputStream.toString());
    return byteArrayOutputStream.toString();
}