2011-11-07 13 views
6

2 projeden Eclipse'te bir Android projesi verildi: Project 1, Android'de sadece iyi bir derleme olan bir Java kütüphanesidir. Proje 2, kütüphane için test durumları, temel olarak AndroidTestCase'u genişleten ve sonuçları Android konsoluna gönderen sınıflardır. Proje 1, bir Java projesidir, Proje 2, Proje 1'e bağlı bir Android projesidir.Eclipse vs konsol uzaktan enstrümantasyondan android test yürütme

Sorun Açıklama: Testleri, Android JUnit Testleri olarak Eclipse'den yürütürsem, gerektiği gibi çalışırlar, hata yok. Ancak, ben komut tarafından tekrar çalıştırmak istiyorsanız:

adb shell am instrument -w bla.bla/android.test.InstrumentationTestRunner

ben LogCat içinde

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) 
    .... 

hataların çok olsun.

Gözlemler: Eclipse, .apk dosyasını yükler. Daha sonra zaten yüklü olan aynı .apk dosyasını yürütün, böylece kullanılabilir sınıflar aynı olmalıdır. Sınıflar Class c = Class.forName("xyz") ile dinamik olarak talep edilir.

Bu durumda sorum şu: Eclipse, kurulu sınıfın çalışma zamanında bulunabilmesi için yüklü .apk'ı nasıl farklı şekilde çalıştırıyor?

+1

Android uygulamanızı test etmenin daha iyi bir yolunu önerebilir miyim? Bunu kullanıyorum ve harika: http://pivotal.github.com/robolectric/. Hiçbir emülatör yok, ayrı bir test projesi yok ... ve hızlıca yineleyerek TDD yapabilirim. –

cevap

2

xyz.class'in CLASSPATH'da olduğundan emin misiniz?

Aynı problem vardı ve sadece bu!