2009-06-17 14 views
62

Viene visualizzato questo errore quando si tenta di eseguire test di unità da Eclipse con un progetto Android. L'elenco di Strumentazione Test Runner è vuoto nelle preferenze di Android.Android Eclipse Plugin: Strumentazione Test Runner non specificato

[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

E 'anche fastidiosamente deciso che perché ho cercato di eseguire un test di unità, una volta, questo è quello che ho sempre voglia di fare.

+0

Android non è compatibile con JUnit4. Usa JUnit3 e tutto inizia a funzionare. –

risposta

59

Nella Run Configuration si può avere Android JUnit Test, se ci sono nuove voci di configurazione di lancio all'interno di questa, si elimina e quindi si esegue l'applicazione verrà eseguito.

NOTA: questa è probabilmente la soluzione se si tenta di eseguire il test case prima di aggiungere le linee corrette al manifest come descritto nella risposta di Josef. Se hai fatto questo, cancella la configurazione (che si lamenterà che nessun correttore di test di strumentazione è stato specificato nell'intestazione) e poi eseguilo di nuovo come un Junit Test di Android e creerà una configurazione valida raccogliendo gli elementi corretti che hai aggiunto al manifest (vedi la risposta di Josef per questo).

+0

Grazie ha funzionato per me – Rauf

+0

fantastico !! sta funzionando .. – hitesh141

111

Stai probabilmente manca i nodi uses-library e instrumentation nel 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

grazie! anche il nome del pacchetto sbagliato può essere la causa – Karussell

+0

Ho ricevuto questo errore dopo aver modificato il nome del pacchetto in XML. Una volta eseguito un clean (e Android ha aggiornato le mie configurazioni di esecuzione), l'ho risolto. – Ring

+7

Avrei votato per due volte se potessi. Nota per sé: use-library va all'interno dell'elemento dell'applicazione. –

9

Basta fare un clic destro sul vostro classe di test da IDE Eclipse e fare clic su "Esegui come". Dopo di ciò seleziona "Esegui configurazione" che avvierà una finestra di confinamento in eclissi e dovrai fare clic sul pulsante di opzione accanto a "Strumentazione Runner" e selezionare il Runner di strumentazione configurato dal menu a discesa. Ora fai clic su Applica e quindi fai clic su Esegui. Penso che questo risolva il tuo problema.

Grazie, Smruti

+1

Questa è la risposta giusta quando vuoi eseguire una sola classe di test e hai già definito la strumentazione e la libreria degli usi nel tuo manifest. –

0

Il problema è quando hai creato il progetto, avresti avuto un AVD, quindi questa configurazione sarebbe mancante. Il mio suggerimento è innanzitutto creare l'AVD e quindi creare il progetto Android :).

Se avessi già creato il progetto e se non hai molto codice che hai scritto, ti suggerisco di eliminarlo e crearne uno nuovo.

2

Non è nel codice, è solo eclissi è un po 'buggato. Nelle configurazioni di esecuzione potrebbe provare a eseguire un test di jUnit, ma selezionare Esegui applicazione e quell'errore andrà via.

18

Una cosa che ho notato in questa discussione che potrebbe far inciampare alcune persone è che è necessario assicurarsi che l'elemento "strumentazione" nel file manifest sia figlio di "manifest" e non di "applicazione". (Gli esempi qui sono corrette, ma questo facile da mescolano.)

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

Se mettete la vostra roba strumentazione all'interno dell'applicazione, non sarà preso, e le scelte del plug-in di Eclipse ADT per il corridore della strumentazione potrebbe essere vuoto. (Ma nessun errore viene generato o visualizzato, etc.)

+4

e use-library deve essere un elemento secondario dell'applicazione – Jeb

1

Oltre ad assicurare che gli articoli qui sotto sono dichiarati nel manifesto del test app, il check-nella configurazione di esecuzione che il campo "Strumentazione corridore" è impostato su

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

Questo è quello in cui mi sono imbattuto quando ho capito perché il test non sarebbe stato eseguito.

manifesto:

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

and... 

<uses-library android:name="android.test.runner" /> 
Problemi correlati