使用字符串

时间:2015-12-11 05:31:31

标签: java android json

我现在正在使用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。 我的错是什么?这段代码在实际设备上没有问题。

3 个答案:

答案 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