0

アプリケーションの依存関係としてグアバがあり、インストルメンテーション テストで Espresso を使用しています。Espresso には が付属しcom.google.guava:guava:16.0guavaおり、アプリケーションの依存関係があるため、依存関係の重複の問題を処理する必要があります。

Jake Wharton はDouble Espressoで、次のような方法で依存関係の重複の問題を解決できると述べています。

compile 'com.google.guava:guava:17.0'
androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3') {
  exclude group: 'com.squareup.dagger'
  exclude group: 'com.google.guava'
}

ただし、その行では、次のエラーがたくさん表示されます。

java.lang.NoSuchMethodError: com.google.common.base.Optional.get
    at com.google.android.apps.common.testing.ui.espresso.base.ThreadPoolExecutorExtractor.getAsyncTaskThreadPool(ThreadPoolExecutorExtractor.java:50)

エスプレッソがグアバの依存関係を見つけていないようです。私が試してみると

compile 'com.google.guava:guava:17.0'
androidTestCompile ('com.jakewharton.espresso:espresso:1.1-r2') {
  exclude group: 'com.squareup.dagger'
  exclude group: 'com.google.guava'
}
androidTestCompile('com.google.guava:guava:17.0')

これjava.lang.NoSuchMethodError: com.google.common.base.Optional.getはエスプレッソ コードからはなくなりましたが、インストルメンテーション テストが guava のメソッドの 1 つを使用するアプリケーション コードにヒットすると、まだ次のエラーが発生します。java.lang.NoClassDefFoundError

このエラーは、私も取り除くときに発生しandroidTestCompile('com.google.guava:guava:17.0')ます。

AndroidTestProvidedグアバで試してみましたが、運が悪いです。

そして、インストルメンテーション テストがグアバ メソッドを使用してアプリケーション コードにヒットしたときに、グアバのパスが見つからない理由についてのアイデアが不足しています。

ここにスタックトレースがあります

Caused by: java.lang.NoClassDefFoundError: com/themis/clioAndroid/activity/calendar/calendarEntry/CalendarEntryListAdapter$1
at com.themis.clioAndroid.activity.calendar.calendarEntry.CalendarEntryListAdapter.<clinit>(CalendarEntryListAdapter.java:112)
... 34 more
Caused by: java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
at dalvik.system.DexFile.defineClass(Native Method)
at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:211)
at dalvik.system.DexPathList.findClass(DexPathList.java:315)
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:58)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
... 35 more

どこに当たるnew Ordering<SomeClass>()か、どれを使うかcom.google.common.collect.Ordering

フィードバックをお待ちしております。

4

1 に答える 1