2013-04-09 26 views
0

我在爲Android項目加載單元測試時看到一些有趣的警告。正常運行應用程序時,我看不到這些錯誤。他們並沒有阻止我的單元測試運行,但他們關心的是。在Android單元測試期間無法連接外部庫

下面的錯誤日誌中提到的F​​lurry庫位於正在測試的項目的庫項目的libs目錄中。

下面介紹一下目錄結構如下:

  • 應用項目
  • 庫項目
      • FlurryAgent.jar
  • 單元測試PR oject

的錯誤是這樣的:

04-09 14:03:12.337: I/dalvikvm(28914): Failed resolving Lcom/flurry/android/bg; interface 2179 'Lcom/google/ads/AdListener;' 
04-09 14:03:12.337: W/dalvikvm(28914): Link of class 'Lcom/flurry/android/bg;' failed 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): Cannot load class. Make sure it is in your apk. Class name: 'com.flurry.android.bg'. Message: com.flurry.android.bg 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): java.lang.ClassNotFoundException: com.flurry.android.bg 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at java.lang.Class.classForName(Native Method) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at java.lang.Class.forName(Class.java:217) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.ClassPathPackageInfoSource.createPackageInfo(ClassPathPackageInfoSource.java:88) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.ClassPathPackageInfoSource.access$000(ClassPathPackageInfoSource.java:39) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:50) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:47) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.SimpleCache.get(SimpleCache.java:31) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.ClassPathPackageInfoSource.getPackageInfo(ClassPathPackageInfoSource.java:72) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.ClassPathPackageInfo.getSubpackages(ClassPathPackageInfo.java:48) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.ClassPathPackageInfo.addTopLevelClassesTo(ClassPathPackageInfo.java:61) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.ClassPathPackageInfo.getTopLevelClassesRecursive(ClassPathPackageInfo.java:55) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.suitebuilder.TestGrouping.testCaseClassesInPackage(TestGrouping.java:156) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.suitebuilder.TestGrouping.addPackagesRecursive(TestGrouping.java:117) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.suitebuilder.TestSuiteBuilder.includePackages(TestSuiteBuilder.java:102) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:366) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4239) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.app.ActivityThread.access$1400(ActivityThread.java:139) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.os.Looper.loop(Looper.java:137) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at android.app.ActivityThread.main(ActivityThread.java:4918) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at java.lang.reflect.Method.invokeNative(Native Method) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at java.lang.reflect.Method.invoke(Method.java:511) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at dalvik.system.NativeStart.main(Native Method) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): Caused by: java.lang.NoClassDefFoundError: com/flurry/android/bg 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): ... 26 more 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): Caused by: java.lang.ClassNotFoundException: com.flurry.android.bg 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
04-09 14:03:12.347: W/ClassPathPackageInfoSource(28914): ... 26 more 

我想確保我的應用程序項目在屬性 - > Java的檢查構建路徑 - >訂單和出口,但是這似乎並沒有做出改變。

任何幫助表示讚賞!

回答

0

如果您正在測試一個庫項目,你應該遵循這個職位描述(含屏幕截圖)中的步驟:你的迴應http://dtmilano.blogspot.ca/2012/04/android-testing-library-projects.html

+0

感謝迭戈,但我沒有實際測試庫項目。我正在測試的項目恰好使用了一個庫項目,鏈接器正在抱怨該庫項目中的一個庫。 – 2013-04-09 22:38:10

+0

因此'單元測試項目'包含了在你的例子中使用'庫項目'的'app項目'測試? – 2013-04-09 22:40:44

+0

是的,你是對的。 – 2013-04-10 02:37:46

相關問題