簡體   English   中英

Android 25和Espresso 2.2.2無法通過檢測測試注釋失敗

[英]Android 25 and Espresso 2.2.2 fails instrumentation test annotations failure

我正在嘗試使用espresso庫在我的項目中設置android檢測測試。 問題是測試類無法編譯(gradle task:compileDebugJavaWithJavac)。 我的Gradle配置文件:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath group: 'com.android.tools.build', name: 'gradle', version: libVersions.android.androidTools
        classpath group: 'org.greenrobot', name: 'greendao-gradle-plugin', version: libVersions.android.greendao
    }
}

apply plugin: 'com.android.application'
android {
    compileSdkVersion configuration.targetSdkVersion
    buildToolsVersion configuration.buildToolsVersion

    defaultConfig {
        applicationId 'com.example.vbp.android'
        minSdkVersion 23
        targetSdkVersion 25
        maxSdkVersion 25
        versionCode buildVersionCode()
        versionName buildVersionName()

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    sourceSets {
        main {
            java {
                srcDirs += new File("src/main/java-gen")
            }
        }
        androidTest.setRoot('src/androidTest')
    }
}

apply plugin: 'org.greenrobot.greendao'
greendao {
    schemaVersion 1
    targetGenDir 'src/main/java-gen'
    generateTests true
}

tasks.withType(Test) {
    testLogging {
        exceptionFormat "full"
        events "started", "skipped", "passed", "failed"
        showStandardStreams true
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile group: 'com.android.support', name: 'appcompat-v7', version: 25.3.1
    compile group: 'org.greenrobot', name: 'greendao', version: 3.2.0
    //Injection
    compile "javax.annotation:jsr250-api:1.0"
    compile "com.google.dagger:dagger:2.4"
    annotationProcessor "com.google.dagger:dagger-compiler:2.4"

    testCompile group: 'junit', name: 'junit', version: 4.12
    testCompile group: 'org.robolectric', name: 'robolectric', version: 3.3.1

    androidTestCompile "junit:junit:${libVersions.test.junit}"
    androidTestCompile('com.android.support.test:runner:0.5', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    androidTestCompile('com.android.support.test:rules:0.5', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    // Optional -- Hamcrest library
    androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
    // Optional -- UI testing with Espresso
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    // Optional -- UI testing with UI Automator
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
}

依賴樹:

androidTestCompile - Classpath for compiling the androidTest sources.
+--- junit:junit:4.12
|    \--- org.hamcrest:hamcrest-core:1.3
+--- com.android.support.test:runner:0.5
|    +--- junit:junit:4.12 (*)
|    \--- com.android.support.test:exposed-instrumentation-api-publish:0.5
+--- com.android.support.test:rules:0.5
|    \--- com.android.support.test:runner:0.5 (*)
+--- org.hamcrest:hamcrest-library:1.3
|    \--- org.hamcrest:hamcrest-core:1.3
+--- com.android.support.test.espresso:espresso-core:2.2.2
|    +--- com.squareup:javawriter:2.1.1
|    +--- com.android.support.test:rules:0.5 (*)
|    +--- com.android.support.test:runner:0.5 (*)
|    +--- javax.inject:javax.inject:1
|    +--- org.hamcrest:hamcrest-library:1.3 (*)
|    +--- com.android.support.test.espresso:espresso-idling-resource:2.2.2
|    +--- org.hamcrest:hamcrest-integration:1.3
|    |    \--- org.hamcrest:hamcrest-library:1.3 (*)
|    +--- com.google.code.findbugs:jsr305:2.0.1
|    \--- javax.annotation:javax.annotation-api:1.2
\--- com.android.support.test.uiautomator:uiautomator-v18:2.1.2

測試類錯誤:

package com.example.vbp.android.activities.splash;

import android.support.test.filters.MediumTest;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static junit.framework.Assert.assertTrue;

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

    @Test
    public void assureActivityIsLaunching() {
        assertTrue(true);
    }
}

並且gradle編譯結果:

Error:(3, 36) error: package android.support.test.filters does not exist 
Error:(4, 35) error: package android.support.test.runner does not exist 
Error:(5, 17) error: package org.junit does not exist 
Error:(6, 24) error: package org.junit.runner does not exist 
Error:(9, 2) error: cannot find symbol class RunWith 
Error:(10, 2) error: cannot find symbol class MediumTest 
Error:(13, 6) error: cannot find symbol class Test 
Error:Execution failed for task ':VBPAndroid:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

備注:我的感覺是注釋存在一些問題,因為編譯器不會抱怨Assert.assertTrue junit import,而只是(以及其他) org.junit.Test注釋。

感謝您的任何想法,提示或解決方案。

好的,我設法找到原因並修復它。 實際上這是GreenDao的一個問題 - 將標志generateTests設置為TRUE會導致依賴性問題。 我只是通過升級到更新版本的GreenDao(3.2.0 - > 3.2.2)來修復它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM