2013-12-17 5 views
5

ich einen Komponententest geschrieben haben, die einfach erweitert und Testcase habe ich folgendes:Android Unit Test Berichterstattung nicht mit Nicht-Bestanden Failing()

public class MetricParserTests extends TestCase { 

    @Override 
    protected void setUp() throws Exception { 
     super.setUp(); 
    } 

    @Override 
    protected void tearDown() throws Exception { 
     super.tearDown(); 
    } 

    public void testFailure() { 
     fail("This needs to fail"); 
    } 
} 

Als ich betreibe meine Tests mit ant test oder adb shell am instrument ich die folgende Ergebnisse:

... [exec] OK (1 Test) ...

ich einen Fehler in der Befehlszeile, um zu sehen erwarten würde.

+0

Ich habe das gleiche Problem. Ich kann sehen, dass der AssertionFailedError ausgelöst wird, wenn ich Zeile für Zeile laufe, aber Eclipse, Ant und Logcat alle melden, dass der Test bestanden hat? –

+0

Ich denke, du solltest deine eigene Frage stellen @ChrisNoldus –

+0

Warum duplizieren? Es ist sehr wahrscheinlich, dass wir genau das gleiche Problem haben. –

Antwort

1

Ich glaube, ich weiß, was das Problem ist. Ich konnte das Problem reproduzieren und lösen. Der von Ihnen verwendete Befehl erstellt kein Ihr Testprojekt auf einem Gerät neu und installiert es erneut. Wenn Sie ant test aufrufen, werden nur die Tests ausgeführt, die bereits auf diesem Gerät installiert sind.

Was Sie anrufen müssen, sind die drei Befehle in Ihrem Testprojekt Verzeichnis:

ant debug 
ant installd 
ant test 

Dann werden alle Tests werden wieder aufzubauen und neu installiert und aktuelle Tests ausgeführt werden. Wenn Sie nicht debug und installd aufrufen, werden die Änderungen, die Sie an den Tests vorgenommen haben, nicht angewendet.

+0

Diese Antwort hilft mir nicht - ich sehe die Frage wurde von Gregg akzeptiert, aber das Lesen seiner Frage zeigt, dass dies nicht korrekt sein sollte, da sein Code nur einen Test hatte und es ausgeführt wurde. Mein Code hat nur 5 Tests, und sie sollten alle fehlschlagen, die Tatsache, dass alle 5 einen Pass haben, zeigt deutlich, dass der neueste Code auf dem Gerät ist (Ganz zu schweigen davon, dass ich zumindest einmal versucht habe, zu entfernen und zu installieren). Nach Dagons Vorschlag werde ich diese Frage mit den Einzelheiten meiner besonderen Situation erneut stellen. –

+1

@ChrisNoldus fühlen Sie sich frei, eine neue Frage zu öffnen, die Ihr Problem in den Details beschreibt und Gemeinschaft versucht, Ihnen zu helfen. –

-1

Die Methode testFailure() hat keine @Test-Annotation. Ist das korrekt?

+1

Nein, Android verwendet JUnit3, also keine Anmerkungen. – Gregg

0

Ich habe nicht die jüngsten Erfahrungen in Android-Tests hatte, aber hier ist das, was ich gefunden habe ...

können Sie normale JUnit-Tests verwenden, wenn Ihr Code vollständig von Android entkoppelt ist (here für ein Beispiel siehe). Dies würde auf Ihre JVM mit dem JUnit Runner laufen.

Wenn Sie jedoch versuchen, diese Tests auf einem Android-Gerät auszuführen (entweder über ant oder die Befehlszeilentools), müssen Sie ein vollständiges Android-Testprojekt erstellen (siehe here). Um "auf dem Gerät" zu testen, müssen Ihre Testfälle eine der Android-Testklassen wie ActivityInstrumentationTestCase2<T> erweitern und mit der InstrumentationTestRunner in der Dalvik VM auf dem Android-Gerät ausgeführt werden. Verwenden Sie eine IDE oder die Befehlszeilentools zum Erstellen eines Testprojekts sollte einen Beispieltest erstellen, damit Sie arbeiten können.

This blog post verbunden von den Kommentaren des Beitrags oben ist eine gute Informationsquelle, wie auch die Android Testing Fundamentals doc.

+0

Ich kann nicht für Gregg sprechen, aber diese Antwort hilft mir nicht. Ich benutze ein Android-Testprojekt, und ich erweitere einen Android-Testfall (In meinem Szenario ist es ApplicationTestCase ). Ich muss in der Android-Umgebung testen, so dass JUnit auf eigene Faust nicht hilfreich wäre. –