2009-06-17 3 views
62

Ich erhalte diesen Fehler, wenn ich versuche, Komponententests von Eclipse mit einem Android-Projekt auszuführen. Die Liste der Instrumentation Test Runners ist in den Android-Einstellungen leer.Android Eclipse Plugin: Instrumentierung Test Runner nicht angegeben

[2009-06-17 23:57:51 - MyApp] ERROR: Application does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare uses-library android.test.runner

Es ist auch ärgerlich entschieden, weil ich habe einmal versucht, einen Komponententest ausführen kann, das ist, was immer das tut, will ich.

+0

Android ist nicht kompatibel mit JUnit4. Benutze JUnit3 und alles funktioniert. –

Antwort

59

In der Run Configuration Sie Android JUnit Test haben kann, wenn es neue Startkonfigurationseinträge innerhalb dieser sind, können Sie es löschen und dann Ihre Anwendung ausführen wird es laufen.

HINWEIS - Dies ist wahrscheinlich die Lösung, wenn Sie versuchen, den Testfall auszuführen, bevor Sie dem Manifest die richtigen Zeilen hinzufügen, wie in der Antwort von Josef beschrieben. Wenn Sie dies getan haben, löschen Sie die Konfiguration (die sich beschweren wird, dass kein Instrumentierungs-Test-Runner in der Kopfzeile angegeben wurde) und führen Sie sie dann erneut als Android-Junit-Test aus und es wird eine gültige Konfiguration erstellt, die das richtige Zeug aufnimmt habe zu dem Manifest hinzugefügt (siehe Josefs Antwort dafür).

+0

Danke für mich gearbeitet – Rauf

+0

toll !! es funktioniert .. – hitesh141

111

Sie fehlt wahrscheinlich die uses-library und instrumentation Knoten in Ihrem AndroidManifest.xml:

<manifest ...> 
    <application ...> 
     <!-- ... --> 
     <uses-library android:name="android.test.runner" /> 
    </application> 
    <instrumentation android:name="android.test.InstrumentationTestRunner" 
     android:targetPackage="your.package" 
     android:label="your tests label" /> 
</manifest> 
+1

danke! auch der falsche Paketname kann die Ursache sein – Karussell

+0

Ich habe diesen Fehler, nachdem ich meinen Paketnamen in XML geändert habe. Sobald ich ein sauberes lief (und Android meine Laufkonfiguration aktualisiert) es repariert es. – Ring

+7

Ich würde das zweimal upvote, wenn ich könnte. Hinweis zu self: uses-library gehört zum Anwendungselement. –

9

einfach einen Rechtsklick auf Ihre Testklasse von Eclipse IDE tun und klicken Sie auf „Ausführen als“. Danach wählen Sie "run Configuration", was ein Confiuration Window in Eclipse startet und Sie müssen auf das Optionsfeld neben dem "Instrumentation Runner" klicken und den konfigurierten Instrumentation Runner aus dem Dropdown auswählen. Klicken Sie nun auf Anwenden und dann auf Ausführen. Ich denke, das wird dein Problem lösen.

Danke, Smruti

+1

Das ist die richtige Antwort, wenn Sie nur eine Testklasse ausführen möchten und in Ihrem Manifest bereits Instrumentierung und uses-library definiert haben. –

0

Das Problem ist, wenn Sie das Projekt erstellt haben, hätten Sie eine AVD gehabt, so dass diese Konfiguration fehlen würde. Mein Vorschlag ist, zuerst den AVD zu erstellen und dann das Android-Projekt zu erstellen :).

Wenn Sie das Projekt bereits erstellt hätten und wenn Sie nicht viel Code haben, würde ich vorschlagen, es zu löschen und ein neues zu erstellen.

2

Es ist nicht in Ihrem Code, es ist nur Eclipse ist ein kleiner Buggy. In Ihren Laufkonfigurationen könnte es sein, dass Sie versuchen, einen jUnit-Test auszuführen, aber wählen Sie Anwendung ausführen, und dieser Fehler verschwindet.

18

Eine Sache, die ich in dieser Diskussion bemerkte, die einige Leute ausstolpern könnte, ist, dass Sie sicherstellen müssen, dass das "Instrumentierungs" -Element in Ihrem Manifest ein Kind von "Manifest" und nicht von "Anwendung" ist. (Die Beispiele hier sind richtig, aber das einfach bis zu mischen.)

http://developer.android.com/guide/topics/manifest/instrumentation-element.html

Wenn Sie Ihre Instrumentierung Zeug in Anwendung setzen, wird es nicht abgeholt werden, und Ihre Entscheidungen in der Eclipse-ADT-Plugin für Instrumentierungsläufer kann leer sein. (Aber kein Fehler geworfen oder gezeigt, etc.)

+4

und uses-Bibliothek muss ein Kind der Anwendung sein – Jeb

1

Neben der Sicherstellung, dass die unter Artikel im Manifest Ihrer Test-App deklariert sind, aktivieren Sie im Run-Konfiguration, dass die „Besetzung runner“ Feld

gesetzt
"com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner". 

Das, was ich in rannte, wenn ich herausfinden würde, warum ich nicht testen würde laufen.

Manifest:

<instrumentation android:name="android.test.InstrumentationTestRunner" 
android:targetPackage="your.package" 
android:label="your tests label" /> 

and... 

<uses-library android:name="android.test.runner" /> 
Verwandte Themen