2015-10-28 24 views
6

私のテストケースが完了するまでに失敗した理由を理解するのは苦労しています。私は、エラーが単にアサーションが失敗したことを示すために混乱しています。つまり、テストは失敗していますが、テストランナー全体がクラッシュするのはなぜですか?Androidインストルメンテーションの実行に失敗しました - アサーションエラー

コンソールでこのエラーが発生しています。

Test failed to run to completion. Reason: 'Instrumentation run failed due to 'junit.framework.AssertionFailedError''. Check device logcat for details

そして、ここでトレースバックです:

10-27 19:51:29.006 4188-4188/? E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.example.jsonapi.sample, PID: 4188 
junit.framework.AssertionFailedError 
     at junit.framework.Assert.fail(Assert.java:48) 
     at junit.framework.Assert.assertTrue(Assert.java:20) 
     at junit.framework.Assert.assertNotNull(Assert.java:218) 
     at junit.framework.Assert.assertNotNull(Assert.java:211) 
     at com.example.jsonapi.JsonAPITest$2.onDone(JsonAPITest.java:101) 
     at com.example.jsonapi.JsonAPITest$2.onDone(JsonAPITest.java:96) 
     at org.jdeferred.impl.AbstractPromise.triggerDone(AbstractPromise.java:107) 
     at org.jdeferred.impl.AbstractPromise.triggerDone(AbstractPromise.java:98) 
     at org.jdeferred.impl.DeferredObject.resolve(DeferredObject.java:70) 
     at com.example.jsonapi.JsonAPI$1.onResponse(JsonAPI.java:178) 
     at com.example.jsonapi.JsonAPI$1.onResponse(JsonAPI.java:172) 
     at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:67) 
     at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30) 
     at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5257) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

そしてここでは、対応するテストです:

public void testFindOneCustomURL() throws Exception { 
    ArrayList<String> reqList = new ArrayList<>(); 
    reqList.add("queue.txt"); 

    MockWebServer server = getServerWithData(reqList); 
    // Ask the server for its URL. You'll need this to make HTTP requests. 
    URL baseUrl = server.getUrl("/api/v1"); 

    JsonAPI client = new JsonAPI(baseUrl, context); 
    client.getGsonBuilder() 
      .setDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
    client.register(new VideoQueue()); 
    Promise prom = client.find(new VideoQueue()) 
      .set("user", "212139") 
      .run() 
      .done(new DoneCallback<ArrayList<VideoQueue>>() { 
       @Override 
       public void onDone(ArrayList<VideoQueue> videoQueue) { 
        assertNotNull(videoQueue); 
        assertNotNull(videoQueue.get(0)); 
        assertNotNull(videoQueue.get(0).getId()); 
        assertEquals("3310190", videoQueue.get(0).getId()); 
       } 
      }).fail(new FailCallback() { 
       @Override 
       public void onFail(Object rejection) { 
        assertNull(rejection); 
       } 
      }); 

    prom.waitSafely(); 
    // Shut down the server. Instances cannot be reused. 
    server.shutdown(); 

    // Make sure our client hit the server 
    RecordedRequest request = server.takeRequest(); 
    assertEquals("/api/v1/users/212139/queue", request.getPath()); 
} 
+0

修正が見つかりましたが、まだ完全に理解しています。私はここで関連チケットを開設しました:https://github.com/jdeferred/jdeferred/issues/67 – freakTheMighty

答えて

1

これは、アサーションが失敗したことを意味します。通常、テストケースが失敗したことを報告する必要があります。しかし、アサーションをコールバックメソッドに置くと、クラッシュするように見えます。多分、これはjunitのバグです。

関連する問題