Frage

Ich schreibe eine Stationierung Android Library Project auf Android Bitmap-Klasse (nennen wir es AndroindLib), die nur Utility-Klasse enthält (keine Aktivität). Ich versuchte es mit Android JUnit zu testen, aber es hält, dass beschweren kann die AnroidLib.apk finden

Was ist der richtige Weg, um Unit-Test Android Library Project?

War es hilfreich?

Lösung

die Dokumentation :

"Es gibt zwei Möglichkeiten, empfohlen von der Einrichtung Testen auf Code und Ressourcen in einem Bibliotheksprojekt:

  • Sie können ein Testprojekt, dass die Instrumente ein Anwendungsprojekt einzurichten, die auf dem Bibliotheksprojekt abhängt. Sie können dann Tests für das Projekt für bibliotheksspezifische Funktionen hinzuzufügen.

  • Sie können ein Standard-Anwendungsprojekt einrichten, die auf der Bibliothek hängt und die Instrumentierung in diesem Projekt setzen. Auf diese Weise können Sie ein in sich geschlossenes Projekt erstellen, die sowohl die Tests / Instrumentierungen und den Code zu Test enthält. "

Andere Tipps

In Ihrem Testprojekt einfach die Paketnamen ändern, so dass es die gleichen wie Ihre Bibliothek Paket ist. Zum Beispiel haben Sie eine Bibliothek, dessen Paket ist "com.example.lib". Erstellen Sie ein Testprojekt Targeting Ihrer Bibliothek. In der Manifest-Datei finden Sie package="com.example.lib.test" und targetPackage="com.example.lib" zu sehen. Ändern Sie einfach das Paket von "com.example.lib.test" auf "com.example.lib" (targetPackage lassen wie es ist).

Stellen Sie außerdem sicher, dass die Bibliothek zu Ihrem Testprojekt referenziert wird nicht in Java Build-Pfad, sondern als eine übliche Android Bibliothek: in Eclipse als Bibliothek in Project->Properties->Android Tab angezeigt werden muß, aber < strong> nicht in Project->Properties->Java Build Path Tab.

Dann führen Sie testet.

http: // www .paulbutcher.com / 2010/09 / android-Bibliothek-Projekt-mit-Tests für-Schritt-für-Schritt / um den Prozess zu implementieren, um den zweiten Vorschlag in CommonsWare Antwort

benötigt hilft beschreiben

Per Dokumentation :

ein Bibliotheksmodul Testen ist das gleiche wie eine App zu testen. Der Hauptunterschied ist, dass die Bibliothek und ihre Abhängigkeiten automatisch Abhängigkeiten des Test APK enthalten. Dies bedeutet, dass der Test APK seinen eigenen Code enthält nicht nur, sondern auch die Bibliothek des AAR und alle seine Abhängigkeiten. Da gibt es keine eigene „App im Test“, die androidTest Aufgabe installiert (und deinstalliert) nur der Test APK. Wenn mehrere Manifest-Dateien Zusammenführen Gradle die Standardprioritätsreihenfolge folgt und verschmilzt die Manifest der Bibliothek in das Testhauptmanifest APK.

. Hinweis: Diese Lösung auf mit Eclipse Indigo (3.8.2) basiert und vielleicht etwas anders für einen anderen IDE werden müssen umgesetzt, obwohl die Grundprinzipien werden die gleichen sein

Ich hatte ähnliche Probleme, und ich fand heraus, dass Sie wie folgt funktioniert immer:

( Hinweis: Diese Anweisungen sind für eine neue Projektgruppe von Grund auf neu Wenn Sie bereits Teile der Projektgruppe erstellt haben, dann können Sie Ihre Projekte ändern müssen, so dass sie in der gleichen verbinden. Art und Weise. )

  1. Erstellen Sie ein neues Projekt Android-Bibliothek durch die „Is Library“ Checkbox bei der Erstellung überprüfen. (Zum Beispiel eines Android-Projekt mit dem Namen "RemingtonAndroidTools").
  2. Erstellen Sie das Android-Bibliothek-Projekt und stellen Sie sicher, dass es eine JAR-Datei in den Papierkorb-Ordner erstellt. (Zum Beispiel einer JAR-Datei namens "RemingtonAndroidTools.jar").
  3. Erstellen Sie ein leeres Android-Projekt zum Testen des Android-App, die als Android-Test App dient. (Zum Beispiel ein Android-Projekt „RemingtonAndroidToolsTestApp“ genannt). Sie werden nicht den Quellcode oder Ressourcen des Android Test App Projekt ändern müssen, wenn Sie etwas haben, das den Zweck zu testen hinzugefügt werden müssen. Viele Dinge können ohne Änderungen an das Android Test App-Projekt getestet werden. Das Android-Test App-Projekt ist eine Brücke zwischen Ihrem Android-Bibliothek-Projekt und dem Android Junit Projekt, das über Android Junit möglich von dem Android-Bibliothek Projekt zu testen macht.
  4. Gehen Sie auf der Registerkarte Bibliothek von Java Build Path für das Android-Test App-Projekt ( "RemingtonAndroidToolsTestApp" in diesem Beispiel).
  5. Fügen Sie die JAR-Datei ( "RemingtonAndroidTools.jar" in diesem Beispiel) des Android Library Project ( "RemingtonAndroidTools" in diesem Beispiel) über die Schaltfläche "Hinzufügen Jars ..." klicken.
  6. Erstellen Sie ein neues Android-Test-Projekt (zum Beispiel "RemingtonAndroidToolsTester"), die als Android-Bibliothek Tester dienen und das Android-Test App Projekt auswählen ( "RemingtonAndroidToolsTestApp" in diesem Beispiel) als Ziel aus.
  7. Gehen Sie auf der Registerkarte Bibliothek von Java Build Path für das Android-Bibliothek Tester-Projekt ( "RemingtonAndroidToolsTester" in diesem Beispiel).
  8. Fügen Sie die JAR-Datei ( "RemingtonAndroidTools.jar" in diesem Beispiel) des Android Library Project ( "RemingtonAndroidTools" in diesem Beispiel) über die Schaltfläche "Hinzufügen Jars ..." klicken.
  9. Finden Sie die letzten Ordner Ihres Android-Paket im Android-Bibliothek Tester-Projekt ( „danny.remington.remington_android_tools_test_app.test“ zum Beispiel) und eine Testklasse ( „MainActivityTest“ zum Beispiel), die erbt von ActivityInstrumentationTestCase2.
  10. Bearbeiten Sie die Testklasse ( "TestActivityTest" in diesem Beispiel), um die Aktivität zu verwenden (zum Beispiel "TestActivity") des Android Test App ( "RemingtonAndroidToolsTestApp" in diesem Beispiel) als Parameter für ActivityInstrumentationTestCase2.
  11. Bearbeiten Sie die Testklasse ( „TestActivityTest“ in diesem Beispiel) und einen Standard-Konstruktor erstellen, die einen Aufruf von super (Klasse) und vorbei in der Klasse des Android Test App ( „TestActivity.class“ zum Beispiel) macht.

Sie sollten sich mit drei Projekten (Android-Bibliothek, Android Test App, Android-Bibliothek Tester), die wie folgt aussehen am Ende:

eingeben Bild Beschreibung hier

eingeben Bild Beschreibung hier

eingeben Bild Beschreibung hier

Sie sollten mit einer Klasse am Ende zum Testen Sie Ihre Android-Bibliothek, die in etwa so aussieht:

package danny.remington.remington_android_tools_test_app.test;

import android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_android_tools_test_app.TestActivity;

/**
 * 
 */
public class TestActivityTest extends
      ActivityInstrumentationTestCase2<TestActivity> {

   public TestActivityTest() {
      super(TestActivity.class);
   }

}

Sie können dann jeden Test hinzufügen, dass Sie wollen. Sie werden nicht die Android Test App ( „RemingtonAndroidToolsTestApp“ in diesem Beispiel) weiter laufen die Tests verweisen müssen, wenn sie Zugriff auf ein Android-spezifische Komponente erfordern (wie die Ordner Assets, zum Beispiel). Wenn Sie eine beliebige Android spezifische zugreifenKomponenten können Sie den Android Test App durch Modifizieren ( „RemingtonAndroidToolsTestApp“ in diesem Beispiel), so tun und dann über die von dem Standard-Android Junit API bereitgestellt Instrumentierung verweist. (Sie können mehr darüber lesen Sie hier: http://developer.android.com/tools /testing/testing_android.html )

Wenn Sie Ihre Utility-Klassen hängen nicht von jedem Android-spezifischen Code, können Sie nur Standardtests JUnit Gerät verwenden. Keine Notwendigkeit, die Android-Versionen verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top