JSONObject单元测试始终为空

Kai*_*Mou 4 android json

我已经看了一个小时了,似乎看不出什么毛病。

JSONObject jsonResponse = new JSONObject();
jsonResponse.put("JSON", "hi");
String myString = jsonResponse.getString("JSON");
assertEquals("hi", myString); 
Run Code Online (Sandbox Code Playgroud)

结果...(整个方法抛出Throwable)。我也尝试了try / catch。结果相同...。

java.lang.AssertionError: 
Expected :hi
Actual   :null
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的课程

public class ECUserTests(){

    @org.junit.Test
    public void testUserExists(){

        try{
            JSONObject jsonResponse = new JSONObject();
            jsonResponse.put("JSON", "Hello, World!");
            String myString = jsonResponse.getString("JSON");
            assertEquals("hi", myString);
        }catch(JSONException e){
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

hgo*_*ebl 7

我想您正在Android外部运行单元测试并针对进行编译android.jar。该库仅包含类和接口签名,而没有任何实现。

解:

在Android上下文中(不在PC上)执行单元测试,或者在PC上运行时,都必须将“真实的” JSON库加载到测试中。

  • 谢谢。我使用gradle并在将“ testCompile'org.json:json:20140107'”添加到build.gradle之后,现在可以在测试中使用JSONObjects了。 (3认同)
  • 你用什么?Gradle,Maven,...?在Gradle和Maven中,您可以定义对org.json的编译/测试依赖项。 (2认同)