Android org.json.JSONObject 在单元测试中返回 null

标签 android json junit kotlin

我在使用 JUnit 测试功能时遇到解析 JSON 的问题。我想测试我的解析逻辑。当我执行测试用例时,我收到一条错误消息:

java.lang.RuntimeException:未模拟 org.json.JSONObject 中的方法 getString

我读到需要为测试提供额外的依赖,因为 org.json 是随 Android SDK 一起提供的,所以我已经放入 gradle 中:

testImplementation 'org.json:json:20180130'

不幸的是,这没有效果。当我在 JSON 对象上执行函数 getString() 时发生错误:

json.getString(JSON_TYPE)

有没有人遇到过类似的问题,知道如何处理?

//编辑

这是负责解析并导致问题的函数(缩写形式):

fun parse(jsonString: String) {
   val json = JSONObject(jsonString)
   val type = json.getString(JSON_TYPE) //here occurs an error
   val id = json.getString(JSON_ID)
}

最佳答案

您需要将以下内容添加到 build.gradle 中: 下面的代码适用于我,当我需要在测试中解析 Json

android {
  // ...
  testOptions { 
    unitTests.returnDefaultValues = true
  }
}

dependencies {
//...
    testImplementation 'org.json:json:20180813'
}

关于Android org.json.JSONObject 在单元测试中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49667567/

相关文章:

sql - 查询 JSON 类型内的数组元素

java - 如何在并行执行中运行相同的测试 X 次?

java - 如何在 JUnit XML 报告上配置名称和类名属性

android - AsncTask 减慢主 (UI) 线程速度

android - 从 ListView 获取位置时,Viewpager 值不会改变

Java读取JSON输入流

java - 当我们使用 Spring Autowiring DAO 时,如何在我的单元测试中模拟出各种结果集?

android - 尝试在空对象引用上调用接口(interface)方法 com.google.firebase.auth.FirebaseAuth$AuthStateListener.onAuthStateChanged'

android - Twitter Android 应用程序 - 源代码

javascript - 根据在 Django 的另一个字段中选择的选项动态更新字段的值