2017-05-13 105 views
1

我試圖安裝的Android儀器測試在我的咖啡庫的使用項目。問題是測試類編譯失敗(gradle task:compileDebugJavaWithJavac)。 我的搖籃配置文件:Android的25和咖啡2.2.2失敗儀器測試註釋失敗

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. 

REMARK :我的感覺是有一些問題的註釋,因爲compilator不抱怨Assert.assertTrue JUnit的進口,但只有(等等)org.junit.Test註解。

感謝您的任何想法,尖或可能的解決方案。

回答

0

好吧,我設法找到原因並解決它。其實這是GreenDao的問題 - 設置標誌generateTests爲TRUE引起的依賴性問題。 我通過升級到更新版本的GreenDao(3.2.0 - > 3.2.2)來修復它。

相關問題