2011-11-07 13 views
6

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をどうやって実行して、実行時に適切なクラスが見つかるかです。

+1

あなたのAndroidアプリケーションをテストするより良い方法を提案できますか?私はこれを使用して素晴らしいです:http://pivotal.github.com/robolectric/。エミュレータも別のテストプロジェクトもありません...私はTDDをやり直すことができます。 –

答えて

2

xyz.classがCLASSPATHにありますか?

私は同じ問題を抱えており、これだけでした!

関連する問題