Проблемы с тестированием инструментов Espresso на устройствах исполнения Dalvik
Я сталкиваюсь с аналогичной проблемойFragmentActivity не может быть протестирована с помощью ActivityInstrumentationTestCase2
Проблема с верхним решением заключается в том, что это относится только к использованию системы сборки Eclipse. Я использую Gradle для своего проекта.
На моем Nexus 5, работающем во время выполнения ART, мои тесты Espresso работают отлично. Когда я использую Nexus 4 в среде выполнения Dalvik или эмуляторе, я сталкиваюсь с исключением, которое не возникает при запуске приложения вне среды тестирования.
java.lang.NoClassDefFoundError: com.packagename.fragment.ProgressDialogFragment
В журналах я нахожу эти подозрительные сообщения, похожие на связанный вопрос:
Class resolved by unexpected DEX: Landroid/support/v4/app/DialogFragment2;(0x41e969d8):0x76064000 ref [Landroid/support/v4/app/DialogFragment;] Landroid/support/v4/app/DialogFragment;(0x41e969d8):0x75883000
(Landroid/support/v4/app/DialogFragment2; had used a different Landroid/support/v4/app/DialogFragment; during pre-verification)
Unable to resolve superclass of Landroid/support/v4/app/DialogFragment2; (271)
Link of class 'Landroid/support/v4/app/DialogFragment2;' failed
Unable to resolve superclass of Lcom/packagename/fragment/ProgressDialogFragment; (270)
Link of class 'Lcom/packagename/fragment/ProgressDialogFragment;' failed
Could not find method com.packagename.fragment.ProgressDialogFragment.newInstance, referenced from method com.packagename.activity.IntroActivity.doJoin
VFY: unable to resolve static method 47365: Lcom/packagename/fragment/ProgressDialogFragment;.newInstance (I)Landroid/support/v4/app/DialogFragment2;
VFY: replacing opcode 0x71 at 0x0063
ProgressDialogFragment
это подклассDialogFragment2
который является подклассом библиотеки поддержки AndroidDialogFragment
учебный класс
Вот зависимости в моем файле Gradle, если это поможет:
compile 'com.android.support:support-v4:+'
compile 'com.android.support:appcompat-v7:+'
compile 'com.google.android.gms:play-services:+'
compile 'com.google.code.findbugs:jsr305:+'
compile 'com.fasterxml.jackson.core:jackson-databind:2.3.+'
compile 'de.greenrobot:greendao:1.3.+'
compile 'fr.avianey:facebook-android-api:+@aar'
compile 'com.squareup.mimecraft:mimecraft:1.1.+'
compile 'com.squareup.picasso:picasso:2.2.+'
compile 'com.squareup.okhttp:okhttp:1.5.+'
compile 'eu.inmite.android.lib:android-styled-dialogs:1.1.+@aar'
compile 'com.newrelic.agent.android:android-agent:3.+'
compile 'uk.co.chrisjenx:calligraphy:0.7.+'
compile 'com.github.chrisbanes.actionbarpulltorefresh:library:0.9.+'
compile 'com.github.chrisbanes.actionbarpulltorefresh:extra-abc:0.9.+'
apt "com.jakewharton:butterknife:${project.ext.butterKnifeVersion}"
compile "com.jakewharton:butterknife:${project.ext.butterKnifeVersion}"
compile fileTree(dir: 'libs', include: '*.jar')
// Excluded modules were determined from here: https://github.com/robolectric/deckard-gradle
instrumentTestCompile fileTree(dir: 'libs-test', include: '*.jar')
instrumentTestCompile 'com.google.guava:guava:14.0.1',
'com.squareup.dagger:dagger:1.1.0',
'org.hamcrest:hamcrest-integration:1.1',
'org.hamcrest:hamcrest-core:1.1',
'org.hamcrest:hamcrest-library:1.1'
instrumentTestCompile('junit:junit:4.11') {
exclude module: 'hamcrest-core'
}
instrumentTestCompile('org.robolectric:robolectric:2.3-SNAPSHOT') {
exclude module: 'classworlds'
exclude module: 'maven-artifact'
exclude module: 'maven-artifact-manager'
exclude module: 'maven-error-diagnostics'
exclude module: 'maven-model'
exclude module: 'maven-plugin-registry'
exclude module: 'maven-profile'
exclude module: 'maven-project'
exclude module: 'maven-settings'
exclude module: 'nekohtml'
exclude module: 'plexus-container-default'
exclude module: 'plexus-interpolation'
exclude module: 'plexus-utils'
exclude module: 'wagon-file'
exclude module: 'wagon-http-lightweight'
exclude module: 'wagon-http-shared'
exclude module: 'wagon-provider-api'
}
instrumentTestCompile 'org.mockito:mockito-core:1.9.+'
Поэтому мой вопрос: как я могу убедиться, что одна и та же библиотека поддержки используется между приложением APK и тестовым APK? Я уже пытался добавить вinstrumentTestCompile 'com.android.support:support-v4:+'
обеспечить ту же версию библиотеки поддержки, но это не помогло.