在使用字符串生成JSONObject时,出现null。
在使用字符串生成JSONObject时,出现null。
我现在正在使用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。
我犯了什么错误?这段代码在实际设备上没有问题。
这个问题是与我的JUnit环境有关的。
我使用了以下配置:
testOptions { unitTests.returnDefaultValues = true }
当我将此选项更改为false时,该测试调用出现错误,如下所示:
java.lang.RuntimeException: Method put in org.json.JSONObject not mocked.
我发现一个使用JSONObject的测试无法以通常的方式进行测试。
真是幸运。
谢谢大家的评论。
我可以通过导入JSON库来测试我的程序调用JSONObject。
有用的信息在这里:stackoverflow.com/questions/29402155/…
使用robolectric是更好的解决方法。对我来说也很好用,而且不需要导入JSON库。