2015-09-25 56 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