2016-12-05 81 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 
}