Wie erben wir Testklassen über Android-Bibliotheksmodule?

Ich habe ein Android Studio Projekt mit zwei Bibliotheksmodulen: foo-module und bar-module . Jeder implementiert eine Bibliothek, mit foo-module definieren eine Strategie-Schnittstelle und bar-module abhängig von foo-module und Umsetzung einer solchen Strategie. foo-module hat Instrumentierungstests ( foo-module/src/androidTest/ ), um seinen foo-module/src/androidTest/ zu testen, indem er eine Stub-Strategie-Implementierung verwendet und das bar-module sollte eigene Instrumentationstests haben.

Ich habe eine AbstractTests Klasse in foo-module/src/androidTest/ das macht die meisten der eigentlichen Tests. Ich habe auch eine StubTests Klasse in foo-module/src/androidTest/ das erweitert AbstractTests und implementiert die notwendigen abstract Methoden, um den Testfall abzuschließen (Bereitstellung einer Implementierung der Strategie, etc.). Das alles funktioniert super.

In bar-module/src/androidTest/ ich eine BarStrategyTests Klasse erstellt, die StubTests spiegeln StubTests , aber die im bar-module implementierte Strategie zur Verfügung stellt. Allerdings kann BarStrategyTests nicht sehen, AbstractTests , obwohl ich compile project(':foo-module') in meiner build.gradle Datei, und die wichtigsten (Nicht-Test) Klassen in bar-module kann gut mit der wichtigsten (nicht- Test) Klassen im foo-module . IOW, während die project() abhängigkeit regelmäßigen code verarbeitet, verarbeitet es nicht androidTest/ code. Ich bekomme "Fehler: Paket com.commonsware.foo.test existiert nicht".

Ich habe auch versucht, androidTestCompile project(':foo-module') mit dem gleichen Ergebnis hinzuzufügen.

Was ist das Rezept für die gemeinsame Nutzung von Instrumentierung Test Code zwischen den Modulen?

Vorübergehend kann ich AbstractTests klonen, aber das ist keine tolle Langzeitlösung.

Diese SO-Frage umfasst einen ähnlichen Grund für gewöhnliches Java. Hat jemand versucht, die Optionen in der eine Antwort und bekam sie für Android Instrumentierung Tests arbeiten? Die erste Option (verschieben Sie die gemeinsame Test-Code in noch ein anderes Modul als reguläre Non-Test-Code) scheint plausibel, aber ich habe keine Ahnung, ob die beiden anderen gut funktionieren mit dem com.android.library Plugin statt der java Plugin.

  • TestCompile Ergebnisse in Android Studio nicht auflösen Abhängigkeiten
  • Gibt es eine Möglichkeit, Eclipse mit Gradle in Android-Projekt zu integrieren?
  • Android Studio 1.1 Gradle 2.2.1 Gradle Version 2.1 benötigte aktuelle Version ist 2.2.1
  • Wie kann ich einen JAR in mein gradle Projekt hinzufügen?
  • Gradle: Konnte nicht finden com.android.support:multidex:1.0.1
  • Wie lese ich Eigenschaften, die in local.properties in build.gradle definiert sind
  • Testspezifische Anwendungsunterklasse
  • Wie zu beheben "Inhalt ist nicht erlaubt in Prolog" Build-Fehler?
  • One Solution collect form web for “Wie erben wir Testklassen über Android-Bibliotheksmodule?”

    Aufgrund der Tatsache, dass alle Testklassen (Einheit und Instrumentierung) kein Teil eines Moduls sind, einschließlich aar, sind sie nicht über die Abhängigkeit zu diesem Modul verfügbar. Ich habe auch dieses Problem konfrontiert und es durch das Erstellen von test-module gelöst und alle erforderlichen Klassen in sie ( src/main/java ) gesetzt. So können Sie in diesem Fall AbstractTests in diesem Modul verschieben und dieses Modul als androidTestCompile Abhängigkeit verwenden.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.