EclipseでAndroidプロジェクトを2つのプロジェクトからビルド: プロジェクト1はAndroidでうまくコンパイルできるJavaライブラリです。 プロジェクト2は、ライブラリのテストケースです。本質的にクラスはAndroidTestCase
に拡張され、結果はAndroidコンソールに出力されます。 プロジェクト1はJavaプロジェクトです。プロジェクト2はプロジェクト1に依存するAndroidプロジェクトです。Eclipseからコンソール遠隔計器とアンドロイドのテストケースを実行
問題の説明:EclipseからAndroid JUnitテストとしてテストを実行すると、エラーは発生しません。しかし、私は、コマンドラインでそれらを再度実行したい場合:
adb shell am instrument -w bla.bla/android.test.InstrumentationTestRunner
私はlogcatで
Cannot load class. Make sure it is in your apk. Class name: xyz
java.lang.ClassNotFoundException: xyz
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:234)
at android.test.ClassPathPackageInfoSource.createPackageInfo
....
Caused by: java.lang.ClassNotFoundException: xyz in loader
dalvik.system.PathClassLoader[/system/framework/android.test.runner.jar:/data/app/bla.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
....
エラーの多くを得ます。
観察: Eclipseは.apkをインストールします。 後で同じ.apkがインストールされているので、使用できるクラスは同じでなければなりません。 クラスは動的にClass c = Class.forName("xyz")
で要求されます。
私の質問はEclipseがインストールされた.apkをどうやって実行して、実行時に適切なクラスが見つかるかです。
あなたのAndroidアプリケーションをテストするより良い方法を提案できますか?私はこれを使用して素晴らしいです:http://pivotal.github.com/robolectric/。エミュレータも別のテストプロジェクトもありません...私はTDDをやり直すことができます。 –