3

我有一个打开 JSON 文件的测试套件。测试没有通过 emulator <= 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 也出现了问题。

4

1 回答 1

2

发现问题。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 之间的所有模拟器,一切都很好。

于 2018-03-12T10:46:43.310 回答