#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();
}