Android Studio Unit Testing: unable to find instru

2019-04-22 18:49发布

问题:

I have a test suite within my Android studio that has the following dir structure:

-MainProject
 -src
  --com
  --tests
    --java.xx.xxx.xx.test

Within my AndroidManifest, I have the following:

<instrumentation
    android:name="android.test.InstrumentationTestRunner"
    android:targetPackage="tests.java.xxx.xxx.xxx.test" />

When I run my tests from the command line using: ./gradlew connectedInstrumentTest, I simply get:

Tests on Nexus 5 - 4.4.2 failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'

When I run the tests from inside Android Studio I get:

Running tests
Test running startedTest running failed: Unable to find instrumentation info for: ComponentInfo{tests.xxx.xxx.xxx.xxx.test/android.test.InstrumentationTestRunner}
Empty test suite.

I also have the testPackageName specified in my defaultConfig in the build.gradle file. Am running Android Studio 0.4.6 on Ubuntu 12.0.4.

Any ideas?

回答1:

I also get error like this and I added the following line in build.gradle file as shown in https://google.github.io/android-testing-support-library/docs/espresso/setup/index.html and it's working. I hope it will also help you :-)

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"


回答2:

I had the same problem and could not find anything on the net. The answer was pretty simple: You have to edit the RunConfiguration of your test so that it is not a Android Test but a JUnit test.

So basically I did the following:

  1. Clicked "Edit Configuration"
  2. Clicked "Add new Configuration" and chose JUnit
  3. Inserted a name and the and chose "All in package" at Test kind.

That's it.



回答3:

Basically three things to cross check:

  1. Make sure your have added testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

in your defaultconfig of build.gradle of that project/ module (in case of sub module)

  1. Make sure you have added following test compile dependencies:

    androidTestCompile 'com.android.support.test:rules:0.5'
    androidTestCompile 'com.android.support:support-annotations:25.2.0'
    androidTestCompile 'com.android.support.test:runner:0.5'
    
  2. Make sure you are adding your test files to the AndroidTest folders and not just to test folder.



回答4:

I removed the entry android.support.test.runner.AndroidJUnitRunner from the Android Test configuration and it started to run the tests for me



回答5:

I tried various methods but none fixed the issue for me. What I did is simply make a copy of the java test file into the same exact folder but with a different name and deleted the original.

I believe this issue was originally caused by moving my test class from the project test folder into the androidTest folder.