2015-09-25 90 views
1

我一直在看这个一个小时,似乎无法看到有什么问题。JSONObject单元测试总是空的

JSONObject jsonResponse = new JSONObject(); 
jsonResponse.put("JSON", "hi"); 
String myString = jsonResponse.getString("JSON"); 
assertEquals("hi", myString); 

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

java.lang.AssertionError: 
Expected :hi 
Actual :null 

这是我使用

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(); 
     } 
+0

你可以发布可运行的最小程序代码吗?我将上面的代码放到Java类中并成功运行。 (我唯一的修改是将assertEquals更改为Assert.assertEquals。) – cherdt

+0

刚添加它。谢谢 –

+0

您的问题的答案在这里:http://stackoverflow.com/a/35675861/3032209 –

回答

4

类,我想你正在运行的单元测试的Android之外,编制反对android.jar。这个库只包含没有任何实现的类和接口签名。

解决方案:

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

+0

如何加载“真正的”JSON库到测试? – user872985

+2

你使用什么? Gradle,Maven,...?在Gradle和Maven中,您可以为org.json定义编译/测试依赖项。 – hgoebl

+2

谢谢。我使用gradle,并添加“testCompile”org.json:json:20140107'“build.gradle我现在可以在测试中使用JSONObjects。 – user872985