2012-10-23 7 views
6

Ich habe ein separates Testprojekt in Eclipse, das seit einiger Zeit erfolgreich in der Befehlszeile und Eclipse ausgeführt wird. Bei der Verwendung von Jenkins zum Ausführen meiner Tests bin ich auf das Problem gestoßen, dass der Standard InstrumentationTestRunner nicht in einem von Jenkins unterstützten XML-Format ausgegeben wird. Ich habe im Internet gelesen, um einen benutzerdefinierten InstrumentationTestRunner zu verwenden. Dies funktioniert in der Befehlszeile mit ADB, schlägt aber in Eclipse fehl, wenn es als Android-Testfall ausgeführt wird.Die Verwendung von InstrumentationTestRunner in Eclipse verursacht Fehler

ich eine benutzerdefinierte Instrumentierung Test Runner heruntergeladen haben (com.neenbedankt.android.test) und fügte hinzu, um es in die AndroidManifest wie folgt aus:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.testedapplication.test" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="7" /> 

    <instrumentation 
     android:name="com.neenbedankt.android.test.InstrumentationTestRunner" 
     android:targetPackage="com.testedapplication" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <uses-library android:name="android.test.runner" /> 
    </application>  
</manifest> 

Hier ist der Fehler, die ich in Eclipse:

[Test-Projekt] ist nicht korrekt für die Ausführung von Tests konfiguriert: Ein targetPackage-Attribut für die Instrumentierung android.test.InstrumentationTestRunner in seiner AndroidManifest.xml konnte nicht gefunden werden!

Sie können sehen, dass ich das targetPackage dort eingestellt habe, also bin ich nicht sicher, was ich noch tun kann?

Antwort

12

Fügen Sie beide Instrumente in Ihre AndroidManifest.xml ein.

<instrumentation 
    android:name="android.test.InstrumentationTestRunner" 
    android:targetPackage="com.example.myapp" /> 

<instrumentation 
    android:name=".MyRunner" 
    android:targetPackage="com.example.myapp" /> 

Dann geht Entdecker-Paket -> $ (Ihr Test-prject $) -> Ausführen als -> Ausführen Konfigurationen -> Android JUnit Test -> $ (Ihr Testprojekt) -> Instrumentation Runner und wähle deinen Läufer dort aus.

+2

Ich habe es wieder versucht, scheint android.test.InstrumentationTestRunner nicht benötigt. Was Sie tun müssen, ist nur die Instrumentation Runner Einstellung zu ändern. –

+2

Mann, ich liebe Stackoverflow. –

0

Da ich Ihre gesamte Projekteinstellung nicht sehen kann, hier ist ein paar Checkliste, die ich versuchen würde.

  1. Haben Sie ein separates Testprojekt in Eclipse? Blockiert der obige Instrumentierungsblock in der Manifestdatei des Quellprojekts oder in der Manifestdatei des Testprojekts?

  2. Haben Sie die < uses-Bibliothek android: name = "android.test.runner"/> Block?

  3. Haben Sie setzen die Instrumentierung Block des Testprojekt außerhalb des <Anwendung> Block und die < verwendet-Bibliothek > Block innerhalb des Anwendungsblocks Testprojekt?

  4. Haben Sie versucht, ein Testprojekt in Eclipse über "Neues Projekt -> Android-Testprojekt" zu erstellen und nur die Instrumentierungsklasse nach dem Hinzufügen des Quellcodes zu ändern? Wenn Sie die Instrumentierungsklasse nicht ändern, funktioniert es?

  5. Führen Sie den Test in Eclipse durch Ausführen von "Ausführen als - > Android JUnit Test"?

Wenn Sie bereits alles, was getan hat, ich glaube, Ihre ganze AndroidManifest Datei einfügen würde helfen, ein wenig zu klären, und ob Sie haben zwei separate Projekte oder nicht.

+0

Ich habe meine ursprünglichen Kommentare bearbeitet, um Ihre Fragen zu beantworten. Bevor ich zum benutzerdefinierten Test-Runner wechselte, funktionierten meine Tests sowohl von der Befehlszeile als auch von Eclipse. Siehe meine neuen Änderungen in der ursprünglichen Frage. Vielen Dank. – SpecialEd

0

Bis jetzt konnte ich es mit der android.test.InstrumentationRunner-Runner UND der Kunde Test Runner in der Manifest-Datei beschrieben arbeiten zu arbeiten. Ich habe den Eindruck, dass das Ausführen von Eclipse den android.test.InstrumentationRunner verwendet und das Ausführen über die Befehlszeile den benutzerdefinierten Test-Runner verwendet, wenn das Setup im Ant-Skript erfolgt.

1

Um Eclipse zu machen, wählen Sie einen benutzerdefinierten Runner, wenn Sie als/android junit laufen - wechseln Sie einfach die Reihenfolge in der Manifest-Datei. Stellen Sie sicher, dass Ihr erstes ist

<instrumentation 
android:name="*.Custom.TestRunner" 
android:targetPackage="com.*" /> 

<instrumentation 
android:name="*.InstrumentationTestRunner" 
android:targetPackage="com.*" /> 
Verwandte Themen