MalformedJsonException выдается только во время юнит-тестов на эмуляторе Android
У меня есть набор тестов, которые открывают файлы JSON. Тесты не проходят на эмуляторе <= API 23 и отлично работают на более новом уровне API.
Есть два разных типа исключений:
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 1025 $.ajsonelement
а также
com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at line 1 column 1025 path $.ajsonelement
,
Странно то, что эти файлы работают нормально, когда я запускаю приложение и открываю их вручную в симуляторе.
Я использую gson, но проблема также появляется с Моши.
1 ответ
Нашел проблему. Файлы JSON были в moduleName/src/test/resources/configs/
, Я переместил их в moduleName/src/test/assets/configs/
Код для их загрузки был:
val assetConfig = InstrumentationRegistry
.getInstrumentation()
.context
.assets
.open(configFileName)
val scanner = Scanner(assetConfig)
return scanner.useDelimiter("\\Z").next() Charsets.UTF_8))
Я заменил его помощником по Guava:
val assetConfig = InstrumentationRegistry
.getInstrumentation()
.context
.assets
.open(configFileName)
return CharStreams.toString(InputStreamReader(assetConfig, Charsets.UTF_8))
Все отлично загружается для всех эмуляторов между API 18 и 26.