2015-10-28 11 views
6

Ich habe Schwierigkeiten herauszufinden, warum meine Testfälle nicht vollständig ausgeführt werden können. Ich bin verwirrt, weil der Fehler scheinbar anzeigt, dass eine Assertion fehlgeschlagen ist. Das bedeutet, dass der Test fehlschlägt, aber warum sollte das den gesamten Testläufer zum Absturz bringen?Android Instrumentation Run fehlgeschlagen - Assertionsfehler

Ich sehe diesen Fehler in der Konsole.

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

Und hier ist die Zurückverfolgungs:

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) 

Und hier ist der entsprechende Test:

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

Ich habe eine Lösung gefunden, aber ich arbeite immer noch an einem vollständigen Verständnis davon. Ich habe ein ähnliches Ticket hier geöffnet: https://github.com/jdeferred/jdeferred/issues/67 – freakTheMighty

Antwort

1

Dies bedeutet, dass die Behauptung, schlug fehl. Normalerweise sollte es melden, dass der Testfall fehlschlägt. Wenn Sie jedoch die Assertion in eine Callback-Methode einfügen, scheint sie abzustürzen. Vielleicht ist das ein Fehler von Junit.

Verwandte Themen