2011-11-07 32 views
6

從2個項目中構建Eclipse中的Android項目: Project 1是一個Java庫,在Android上編譯得很好。 項目2是庫的測試用例,實質上是擴展了AndroidTestCase的類並將結果輸出到Android控制檯。 項目1是一個Java項目,項目2是一個取決於項目1的Android項目。從Eclipse執行android testcase與控制檯遠程工具

問題描述:如果我將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中嗎?

我有同樣的問題,只是這個!