MalformedJsonException仅在Android Emulator上进行单元测试时抛出

时间:2018-03-12 09:26:07

标签: android parsing gson mosh

我有一个打开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但问题也出现在Moshi身上。

1 个答案:

答案 0 :(得分:0)

发现了这个问题。 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)) 

我用番石榴帮手替换了它:

val assetConfig = InstrumentationRegistry
            .getInstrumentation()
            .context
            .assets
            .open(configFileName)
return CharStreams.toString(InputStreamReader(assetConfig, Charsets.UTF_8))

API 18和26之间的所有模拟器都可以正常加载。