我现在正在使用JUnit尝试此代码。
try {
JSONObject jsonObject = new JSONObject("{\"name\":\"foo\",\"id\":\"2\"}");
String name = jsonObject.getString("name");
Log.d(TAG, "name = " + name);
} catch (JSONException e) {
e.printStackTrace();
}
我现在正在测试“Log.d ...”中的断点线,但jsonObject始终为null。 我的错是什么?这段代码在实际设备上没有问题。
答案 0 :(得分:0)
如果JSON格式不正确,您应该收到错误,因此不确定为什么它会为null。
为了以防万一,我个人会避免需要转义字符串中的引号并单独放置每个键值。
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "foo");
jsonObject.put("id", "2");
答案 1 :(得分:0)
这个问题与我的JUnit emviroment有关。 我使用这种配置。
testOptions {
unitTests.returnDefaultValues = true
}
当我将此选项更改为false时,此测试会调用类似
的错误java.lang.RuntimeException: Method put in org.json.JSONObject not mocked.
我发现使用JSONObject的测试无法用常规方式进行测试。 很幸运。
谢谢大家对我发表评论。
答案 2 :(得分:0)
Android JSON API是android的一部分,而不是Java API的一部分。 也就是说,它们无法在JVM环境上运行。
如果您想使用JSON API进行单元测试,则需要在build.gradle
的{{1}}文件中集成以下依赖项
android studio