I have written a simple test case class and placed it in the default test directory for Android Studio: \"src/androidTest\". I\'ve created an Android Tests build configurati
Please post your entire build.gradle file.
What version of 'com.android.tools.build:gradle' are you using?
In 0.8, the default test path is "instrumentTest/java/...'.
In 0.9, the default test path changed to "androidTest/java/...".
To use androidTest, you should have:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
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...
This issue is crazy, it just is. Don't overthink it.
It fixed it for me on Android Studio 3.6.3
These two ways of running tests are different and this approach could fix the issue for you too.
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"
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:
Mark Directory As
... Sources Root
.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.
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.