未模拟 Android 单元测试

新手上路,请多包涵

我遵循 了本指南,但我遇到了这个错误:

junit.framework.AssertionFailedError:构造函数中的异常:testSaveJson(java.lang.RuntimeException:未模拟 org.json.JSONObject 中的方法。请参阅 https://sites.google.com/a/android.com/tools/tech-文档/单元测试支持 以获取详细信息。

我按照指南所说的那样通过 Gradle build 进行了修改,但这并没有什么区别

testOptions {
    unitTests.returnDefaultValues = true
}

原文由 user1634451 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 326
2 个回答

JSON 与 Android SDK 捆绑在一起,因此您只需点击一个存根即可。您可以拉入一个 JSON jar,它将提供要使用的真实对象。

为此,您需要将其添加到您的 build.gradle 中:

 testImplementation 'org.json:json:20140107'

或者,您可以下载并包含 jar。

 testCompile files('libs/json.jar')

请注意,最新版本的 JSON 是为 Java 8 构建的,因此您需要获取 20140107 您可能还需要清理并重建项目。

原文由 Ben Pearson 发布,翻译遵循 CC BY-SA 4.0 许可协议

我认为您尝试使用 org.json.JSONObject 运行测试,它是 Android Framework 的一部分,纯 jUnit

来自文档:

用于运行单元测试的 android.jar 文件不包含任何实际代码 - 由真实设备上的 Android 系统映像提供。相反,所有方法都会抛出异常(默认情况下)。

我们知道在使用 Log 或 TextUtils 等类时默认行为存在问题,并将在未来的版本中评估可能的解决方案。

您需要模拟可用于此目的的 Android 环境 Robolectric 或 InstrumentationTests

原文由 ar-g 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题