概要
AndroidStudio に備わっている Record Espresso Test で作成したテストを実行してみたら下記のエラーが出て行き詰まったお話。
java.lang.ClassNotFoundException: <パッケージ名>.<クラス名>
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:400)
at android.support.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:72)
at android.support.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:104)
at android.support.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:789)
at android.support.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:539)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:382)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1932)
Caused by: java.lang.ClassNotFoundException: Didn't find class "<パッケージ名>.<クラス名>" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/<パッケージ名>.test.test-1/base.apk", zip file "/data/app/<パッケージ名>.test-1/base.apk"],nativeLibraryDirectories=[/data/app/<パッケージ名>.sptest.gtec.test-1/lib/arm64, /system/lib64, /vendor/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 8 moreTests ran to completion.
環境
AndroidStudio 3.1.4
Espresso 3.0.2
対応内容
自動作成されたテストファイルのディレクトリを変更したら実行できた。
自動作成されたファイルのディレクトリの場所が違うなんて全く疑っていなかったので、抽象的なエラーを元に試行錯誤するのにかなり時間を使ってしまった・・・。
なぜ aidl
配下に作成されてしまったのかはまだ調べていない。
(どこかに設定があるんだろうか・・?)
修正前:
src -> androidTest -> aidl -> <パッケージ名> -> <クラス名>
↓
修正後:
src -> androidTest -> java -> <パッケージ名> -> <クラス名>