Android Eclipse Plugin: Instrumentation Test Runner not specified

AndroidEclipseUnit TestingJunit

Android Problem Overview


I'm getting this error when trying to run unit tests from Eclipse with an Android Project. The list of Instrumentation Test Runners is empty in the Android preferences.

> [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

It's also annoyingly decided that because I tried to run a unit test once, that's what I always want to do.

Android Solutions


Solution 1 - Android

You're probably missing the uses-library and instrumentation nodes in your 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>

Solution 2 - Android

In the Run Configuration you may have Android JUnit Test, if there are any new launch configuration entries inside this, you delete it and then run your application it will run.

NOTE - This is likely to be the solution if you tried to run the test case before adding the correct lines to the manifest as described in the answer from Josef. If you have done this, delete the configuration (which will be complaining that no instrumentation test runner has been specified in its header) and then run it as an Android Junit Test again and it will create a valid configuration picking up the correct stuff that you have added to the manifest (see Josef's answer for this).

Solution 3 - Android

One thing I noticed in this discussion that might be tripping some people up is that you need to make sure the "instrumentation" element in your manifest is a child of "manifest" and not of "application." (The examples here are correct, but this easy to mix up.)

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

If you put your instrumentation stuff inside application, it won't be picked up, and your choices in the Eclipse ADT plugin for instrumentation runner may be blank. (But no error is thrown or shown, etc.)

Solution 4 - Android

Just do a right click on your test class from eclipse IDE and click on "Run As". After this select "run Configuration" which will launch a Confiuration Window in eclipse and you need to click on the radio button next to the "Instrumentation Runner" and select the configured Instrumentation Runner from the drop down. Now click on apply and then click on Run . I think this will solve your problem.

Thanks, Smruti

Solution 5 - Android

It's not in your code, it's just eclipse is a little buggy. In your run configurations it could be trying to run a jUnit test, but select Run Application and that error will go away.

Solution 6 - Android

Besides ensuring that the below items are declared in the manifest of your test app, check in the Run Configuration that the "Instrumentation runner" field is set to

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

This what I ran into when figuring out why I test wouldn't run.

Manifest:

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

 and...

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

Solution 7 - Android

The problem is when you created the project, you would have had a AVD, so these configuration would be missing. My suggested way is first create the AVD and then create the android project :).

If you would have already created the project and if does not have much code you have written I would suggest to delete it and create a new one.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRob Stevenson-LeggettView Question on Stackoverflow
Solution 1 - AndroidJosef PflegerView Answer on Stackoverflow
Solution 2 - AndroidD.S.Pradeep KumarView Answer on Stackoverflow
Solution 3 - AndroidCharlie CollinsView Answer on Stackoverflow
Solution 4 - Androiduser190362View Answer on Stackoverflow
Solution 5 - Androidpier shawView Answer on Stackoverflow
Solution 6 - AndroidYoongView Answer on Stackoverflow
Solution 7 - AndroidKrishna AnisettyView Answer on Stackoverflow