アプリケーションの依存関係としてグアバがあり、インストルメンテーション テストで Espresso を使用しています。Espresso には が付属しcom.google.guava:guava:16.0
てguava
おり、アプリケーションの依存関係があるため、依存関係の重複の問題を処理する必要があります。
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
。
フィードバックをお待ちしております。