2016-12-05 54 views
2

我有一個Kotlin咖啡測試問題。我已經在模塊的構建腳本中應用了Kotlin-Android Gradle插件,並且測試在Android Studio中運行時沒有問題(測試類由AndroidJUnit4轉輪註釋並運行),但從終端運行Gradle任務「assembleDebugAndroidTest」無法找到我的主類。和包(在試驗中使用的類),它拋出一個Unresolved Reference錯誤安卓咖啡測試(寫在Kotlin)看不到主要類和包

這裏是構建腳本的sourceSets部分:

sourceSets { 

    androidTest { 
     java.srcDir 'src/sharedTestUtils/java' 
     java.srcDir 'src/acceptanceTests/java' 
     java.srcDir 'src/functionalTests/java' 
     java.srcDir 'src/sharedTestUtils/kotlin' 
     java.srcDir 'src/acceptanceTests/kotlin' 
     java.srcDir 'src/functionalTests/kotlin' 
    } 

    acceptanceTests { 
     java.srcDir 'src/sharedTestUtils/java' 
     java.srcDir 'src/sharedTestUtils/kotlin' 
    } 

    // source sets for Kotlin 
    // main.java.srcDirs += 'src/main/kotlin' 
    test.java.srcDirs += 'src/test/kotlin' 

} 

和測試的依賴模塊中:

apply plugin: 'kotlin-android' 

dependencies { 
    androidTestCompile deps.kotlin 
    androidTestCompile deps.kotlinTest 
    androidTestCompile deps.kotlinTestJunit 
} 

項目的生成腳本:

ext.deps = [ 
    kotlin    : "org.jetbrains.kotlin:kotlin-stdlib:$ver.kotlin", 
    kotlinTest   : "org.jetbrains.kotlin:kotlin-test:$ver.kotlin", 
    kotlinTestJunit  : "org.jetbrains.kotlin:kotlin-test-junit:$ver.kotlin" 
] 

我使用科特林版本1.0.5-2。

我們有一個自定義測試運行器testInstrumentationRunner,它註冊一些空閒資源和一些活動掛鉤來解鎖設備屏幕和獲取喚醒鎖,並使用TestButler來禁用動畫和穩定測試。但是,測試用Espresso jUnit 4 runner(@RunWith(AndroidJUnit4::class))註釋。但Android Studio運行測試沒有任何問題的事實令人困惑。

回答

1

kotlin測試編譯任務需要在相關彙編任務之後運行,以使類引用正常工作。

對於assembleDebugAndroidTest,請確保首先運行assembleDebug

在命令行中,任務的順序可以迅速地檢查的gradle「dry run」像這樣:

./gradlew assembleDebugAndroidTest -m 

如果assembleDebug是不正確的順序。您可以通過將以下內容添加到您的構建文件來修復訂單:

afterEvaluate { 
    compileDebugAndroidTestKotlin.dependsOn assembleDebug 
}