use*_*451 44 junit android unit-testing
我按照了这个指南 https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support, 但我遇到了这个错误:
junit.framework.AssertionFailedError: Exception in constructor: testSaveJson (java.lang.RuntimeException: Method put in org.json.JSONObject not mocked. See https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support for details.
Run Code Online (Sandbox Code Playgroud)
我按照指南的说法修改了Gradle,但它并没有什么区别
testOptions {
unitTests.returnDefaultValues = true
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*son 90
JSON与Android SDK捆绑在一起,所以你只需要打一个存根.您可以引入一个JSON jar,它将提供要使用的真实对象.
为此,您需要将其添加到build.gradle:
testImplementation 'org.json:json:20140107'
或者,您可以下载并包含jar.
testCompile files('libs/json.jar')
Run Code Online (Sandbox Code Playgroud)
请注意,最新版本的JSON是为Java 8构建的,因此您需要获取20140107
您需要将以下内容添加到 build.gradle 中:
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
Run Code Online (Sandbox Code Playgroud)
和
dependencies {
//...
testImplementation 'org.json:json:20180813'
}
Run Code Online (Sandbox Code Playgroud)
我认为你试图运行测试,org.json.JSONObject这是Android Frameworkon pure 的一部分jUnit。
从文档:
用于运行单元测试的 android.jar 文件不包含任何实际代码 - 由真实设备上的 Android 系统映像提供。相反,所有方法都会抛出异常(默认情况下)。
我们知道在使用 Log 或 TextUtils 等类时默认行为是有问题的,并将在未来版本中评估可能的解决方案。
您需要模拟可用于此目的的 Android 环境Robolectric或 InstrumentationTests
| 归档时间: |
|
| 查看次数: |
18029 次 |
| 最近记录: |