TestCase class not found by Android Studio

You needn't really to rebuild structure of src directories to create appropriate tests.

The tested and the testing class should be in the same package.

But as for folders, they should be separated. So, for tests and normal sources we use different roots.

The problem is, how to set these roots. In the AS 1.5 (maybe earlier versions can do it, too), it can be done easily:

  1. Make practically any structure of directories. Somewhere in it there is the root dir of tested sources. Right click it and Mark Directory As ... Sources Root.
  2. Make another arbitrary structure of directories for tests. Somewhere in it there is the root dir of test sources. Right click it and Mark Directory As ... Test Sources Root.

Under these roots the path to a test class must be the same as the path to the tested class from its root, for dir names along these paths define the packages and they should be the same. But you needn't worry about the structures above the roots.

Using this method you can add tests to any existing structure of sources. If you are creating the structure yourself, make it rather traditional.

Edit. Notice, that folders structure for modules of Java 9 is something ABSOLUTELY different.


Maybe I can save time for somebody: I had the same kind of error "Class not found:" when I had "release" buildVariant selected in Android Studio, so before you run AndroidTests(Espresso) double check your build variant and try to set it to "Debug"


You need to check "run" configuration.

If you are going to run tests from androidTest folder, you should choose configuration under Android Instrumented Test, and not the junit.

Run(Top tool window) / Edit configurations...

enter image description here


The package structure under the androidTest/java directory needs to exactly parallel the structure under the main/java directory.

My problem above was that the package structure under main was com.mydomain.myapp.subpackage and the directory structure under androidTest was com.mydomain.myapp.subpackage.somethingelse.

Once the package structures matched, the tests were discovered and executed flawlessly.