AppCompat库23.2.1不使用espresso v2.2.2

时间:2016-03-17 15:29:41

标签: android android-espresso

我有一个android项目,我使用espresso来定义测试。这一切都运行良好,但在升级到AppCompat 23.2.1(从AppCompat 23.0.1)之后,测试的执行总是崩溃。

我的build.gradle依赖项:

dependencies {

// Ok Config
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'com.android.support:support-annotations:23.2.1'

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

项目编译并执行正常,但是当我尝试运行测试时,它会因此错误而崩溃:

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity

尽管错误文本我使用的是Theme.AppCompat的后代主题,但我根本不理解错误信息。

有人有同样的问题吗?这似乎与appcompat和espresso的依赖关系有任何问题,但我无法找到并解决我的问题。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:18)

我认为主要问题是espresso模块使用的支持库与我项目中使用的支持库不同,因此当我尝试运行测试时,测试会崩溃。

最后我解决了它,不包括所有espresso模块的支持库,强制他们使用我项目的支持库。现在一切都很好。希望这可以帮助任何人!

我的gradle看起来像这样:

    compile 'com.android.support:appcompat-v7:23.2.1'
    compile 'com.android.support:design:23.2.1'
    compile 'com.android.support:support-annotations:23.2.1'


    androidTestCompile ('com.android.support.test:runner:0.5') {
        exclude group: 'com.android.support'
    }
    androidTestCompile ('com.android.support.test:rules:0.5') {
        exclude group: 'com.android.support'
    }
    androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.2') {
        exclude group: 'com.android.support'
    }
    androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.2.2') {
        exclude group: 'com.android.support'
    }
    androidTestCompile ('com.android.support.test.espresso:espresso-intents:2.2.2') {
        exclude group: 'com.android.support'
    }