Roboelektrisches und Android Studio

8

Ich habe versucht, es für ein paar Tage zu tun, ohne Ergebnis. Ich muss Robolectric in Android Studio (0.8.9, neueste Version) einrichten. Ich habe verschiedene Tutorials Android Unit and Integration Tests gefolgt, Roboelektrische Installation für Unit-Tests , Android Gradle App mit Roboelektrischen , Wie man Roboelectric JUnit Tests durchführt , aber immer eine Art von Fehler.

Also habe ich speziell zum Testen ein Modul erstellt:

Kedzoh (Projekt) build.gradle :

%Vor%

App build.gradle:

%Vor%

kedzoh-Tests build.gradle:

%Vor%

An diesem Punkt kann ich Robolectric-Klassen nicht importieren, es gibt mir einen Fehler. Wenn ich apply plugin: 'robolectric' zu kedzoh-tests build.gradle hinzufüge, fragt es nach 'android' plugin . Nachdem ich es hinzugefügt habe, beschwert es sich, dass es kein Manifest gibt und es nicht schafft. Ich bin nicht sicher, dass dies die richtige Konfiguration ist, da es nie wirklich funktioniert hat. Kann jemand bitte einen Rat geben, wie man Robolectric im Android Studio einstellt?

BEARBEITEN:

Ich habe versucht, die Antwort unten, aber immer noch mit "Class nicht gefunden" Fehler:

    
Roman 21.10.2014, 10:54
quelle

2 Antworten

2

Dort gibt es bereits verschiedene Projektvorlagen für robolectric. Hast du Ссылка versucht?

    
nenick 24.10.2014 05:00
quelle
0

Ich denke, dass Sie Ihr Leben vielleicht schwieriger und komplizierter machen, indem Sie Ihr Testmodul außerhalb des Hauptmoduls "app" erstellen. Die meisten Tutorials, die ich gesehen habe, haben einen androidTest-Ordner im App-Modul, der Ihre Robolectric-Tests enthalten kann. Alle älteren Tutorials rund um Eclipse, die ich gesehen habe, scheinen uns anzuweisen, separate Testmodule für das Hauptprojekt zu erstellen.

Wenn ich Robolectric verwenden würde, würde ich das Projekt so einrichten, wie ich es für Sie erstellt habe Ссылка . Ich würde den androidTest-Ordner verwenden, um meine Tests zu setzen und die Gradle-Dateien wie folgt zu konfigurieren.

Beachten Sie, dass die Abhängigkeiten für die Tests mit der androidTestCompile-Deklaration enthalten sind und die Anwendungsabhängigkeiten nur mit compile deklariert werden.

Ein weiteres Element in dieser Gradle-Datei ist der RoboLectric-Bereich, in dem Klassen im Ordner androidTest enthalten sind. Alles, was sich nicht im Espresso-Ordner befindet, wird mit dem Testtool von Gradlew ausgeführt, und alles, einschließlich des espresso-Ordners, wird beim Aufruf von gradlew connectedAndroidTest target ausgeführt.

%Vor%

Projekt-Build-Datei Hier fügen wir den Pfad der robolectric-Klasse hinzu, so dass wir die robolectric gradle-Befehle in der obigen Konfigurationsdatei verwenden können.

%Vor%

Können Sie erklären, welche Fehler Sie haben, da es viele mögliche Fehler geben kann, die auf Ihrer Arbeitsweise basieren, auch gibt es einen besonderen Grund für das Erstellen eines separaten Testmoduls.

Das Projekt, das ich zur Verfügung gestellt habe, basiert auf der Deck-Gradle-Konfiguration ( Ссылка ). Es gibt eine Reihe von Tipps hier über JUnit Konflikte usw., mit denen Sie Probleme haben könnten.

Sobald Sie so weit gekommen sind, um den Komponententest in der Anwendung debuggen zu können, müssen Sie den Klassenpfad manuell anpassen, wenn Sie den Test starten (überhaupt nicht!), basierend auf den Informationen in diesem Artikel a href="https://github.com/codepath/android_guides/wiki/Robolectric-Installation-for-Unit-Testing"> Ссылка

Sie müssen den Komponententest ausführen, warten, bis er fehlschlägt, den Parameter -classpath kopieren und dessen Wert (Er wird ziemlich lang sein und beginnt und endet mit ") und kopiert ihn in Ihre VM-Optionen in Ihrer Ausführungskonfiguration Am Ende dieses Klassenpfads fügen Sie a oder a hinzu: abhängig von Ihrem Pfaddevelometer und fügen Sie den Pfad zu Ihren Testklassen hinzu, der etwas wie <ABSOLUTE_PATH_TO_PROJECT>/build/test-classes sein wird. Dies fügt Ihre Testklassen dem Klassenpfad und dann Android Studio hinzu sollte in der Lage sein, sie auszuführen.

Dies setzt auch voraus, dass die Schritte zum Ausführen von gradle testClasses im Artikel Ссылка

    
Marc Thomas 21.10.2014 12:13
quelle