2016-03-27 10 views
1

Wenn ich ./gradlew Tasks ausgeführt habe, bemerke ich eine Build-Aufgabe namens mockableAndroidJar. Die Beschreibung sagt folgendes:android - grelle Aufgabe genannt mockableAndroidJar, wie man es tatsächlich in unitTests verwendet

Erstellt eine Version von android.jar, die für Komponententests geeignet ist.

Kann mir jemand ein Beispiel geben, wie ich diesen Jar-Mock im Code verwenden kann?

Vom android tools page sah ich folgendes:

Unit-Tests auf einem lokalen JVM laufen auf Ihrer Entwicklungsmaschine. Unser gradle-Plugin kompiliert den Quellcode in src/test/java und führt ihn mit den üblichen Gradle-Testmechanismen aus. Zur Laufzeit werden Tests mit einer modifizierten Version von android.jar ausgeführt, bei der alle finalen Modifikatoren entfernt wurden. Auf diese Weise können Sie beliebte Mocking-Bibliotheken wie Mockito verwenden.

Aber meine Frage ist, kann mir jemand zeigen, wie ich meinen Test verwenden kann diese neue android.jar-Datei anstelle der aktuellen, die Finals auf den Klassen hat? Wie zeigen Sie Tests, um dieses Glas stattdessen zu verwenden? Ich sah this question, aber es zeigt mir nicht, wie man das in Tests verwendet, gibt nur Theorie. Ich lief eigentlich den folgenden Befehl von Shell:

./gradlew mockableAndroidJar 

und der Ausgang wurde der folgende:

$./gradlew mockableAndroidJar 
Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m 
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=768m; support was removed in 8.0 
Incremental java compilation is an incubating feature. 
:app:mockableAndroidJar UP-TO-DATE 

BUILD SUCCESSFUL 

Total time: 1.226 secs 

Also ich dachte, es würde einige Veränderung in meinem Verzeichnisstruktur sein, aber ich sehe nicht vorhanden. Wird die JAR-Datei automatisch für mich ausgetauscht?

Antwort

2

Als ich dieses Ziel in meinem Projekt ausführen, die API-Level-Ziele 23, erzeugt es diese Datei:

./build/generated/mockable-android-23.jar 

Dieses JAR-Dateien enthalten alle die stubbed, öffentliche Klassendefinitionen für die API-Level 23, mit der Ausnahme alle der letzten Modifikatoren wurden entfernt, so dass sie verspottet werden können.

Diese JAR-Datei so zu Ihrem Test Classpath automatisch hinzugefügt, wenn Sie Tests kompilieren und ausführen, können Sie den Zugriff auf diese Klassen für spöttisch, wenn Sie Unit-Tests auf der Kommandozeile:

./gradlew test 

werden Sie müssen eigene Tests definieren. Normalerweise platzieren Sie sie in src/test/main und verwenden das JUnit-Framework, um sie auszuführen.

Verwandte Themen