Android系统。如何使用支持库24.1.1的Espresso 2.2.2?

时间:2016-08-28 11:46:33

标签: android android-support-library android-espresso

这是我的测试:

@RunWith(AndroidJUnit4.class)
@MediumTest
public class MainActivityTest {

    @Rule
    public ActivityTestRule<MainActivity> mainActivityActivityTestRule = new ActivityTestRule<MainActivity>(MainActivity.class);

    @Test
    public void buttonShouldBePresent(){
        Intents.init();
        onView(withId(R.id.button)).perform(click());
        intended(hasComponent(SecondActivity.class.getName()));
    }


}

我有这些依赖项:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.1.1'
    compile 'com.android.support:recyclerview-v7:24.1.1'
    compile 'com.android.support:cardview-v7:24.1.1'
    compile 'com.android.support:preference-v7:24.1.1'
    compile 'com.android.support:design:24.1.1'

    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.2'
    androidTestCompile 'com.android.support.test:runner:0.5'

}

我收到此错误:

Error:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (24.1.1) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.

尝试使用早期版本的支持库(可以成功导入但不能使用TextInputEditText):

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'

    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.2'
    androidTestCompile 'com.android.support.test:runner:0.5'

}

allprojects {
    repositories {
        jcenter()
    }
    configurations.all {
        resolutionStrategy.force('com.android.support:support-annotations:23.1.1')
    }
}

我可以导入早期版本,但有2个原因导致我无法使用早期版本。

  1. 我使用的是早期版本中没有的TextInputEditText

  2. 项目要求

    • Android Studio 2.1 +
    • Android SDK Platform-tools 24 +
    • Android SDK工具25 +
    • SDK Build Tools 24.0.0
    • Android支持存储库34 +
    • Android SDK Platform 24
  3. 如何在不降低支持库版本的情况下解决此问题?

3 个答案:

答案 0 :(得分:2)

您可以使用以下方法强制测试中的注释库:

androidTestCompile 'com.android.support:support-annotations:24.1.1'

答案 1 :(得分:1)

从Espresso中排除support-annotations

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})

您无法混合支持库版本(例如24.x.x所有内容与23.1.1 support-annotations,请删除此内容:

configurations.all {
    resolutionStrategy.force('com.android.support:support-annotations:23.1.1')
}

专业提示:

design取决于appcompat-v7recyclerview-v7,因此您无需指定它们。

答案 2 :(得分:0)

有两种解决方法可以解决它:

  • 最简单的方法是在此行中依赖 include

    androidTestCompile'c​​om.android.support:support-annotations:24.1.1'

并删除此内容:

configurations.all {
    resolutionStrategy.force('com.android.support:support-annotations:23.1.1')
}
  • 另一种方法是排除 android:support:annotations libs:

    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        module: 'support-annotations'
    })
    

并删除此内容:

configurations.all {
    resolutionStrategy.force('com.android.support:support-annotations:23.1.1')
}

Espresso及其webintents等所有工件都在版本23.1.1及更早版本(espresso-contrib)中使用Android支持库

请注意,最新版本的Android支持库已经24.2.0,而不是24.1.1

希望它会有所帮助