Android Espresso测试(用Kotlin编写)看不到主要的类和包

我有一个Kotlin咖啡测试的问题。 我已经在模块的构建脚本中应用了Kotlin-Android Gradle插件,并且测试在Android Studio中运行时没有问题(测试类由AndroidJUnit4运行器注释并运行),但是从终端运行Gradle任务“assembleDebugAndroidTest”未能找到我的主要的类和包(测试中使用的类),它引发一个Unresolved Reference错误。

以下是构建脚本的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" ] 

我正在使用Kotlin的1.0.5-2版本。

我们有一个自定义的测试运行器testInstrumentationRunner ,它注册一些空闲资源和一些活动钩子来解锁设备屏幕和获取唤醒锁,并使用TestButler来禁用动画和稳定测试。 然而,测试是用Espresso jUnit 4 runner( @RunWith(AndroidJUnit4::class) )注释的。 但Android Studio运行测试没有任何问题的事实令人困惑。

kotlin测试编译任务需要在相关的汇编任务之后运行,以使类引用正常工作。

对于assembleDebugAndroidTest ,确保首先运行assembleDebug

从命令行,任务的顺序可以用gradle“ dry run ”快速检查,如下所示:

 ./gradlew assembleDebugAndroidTest -m 

如果assembleDebug的顺序不正确。 您可以通过将以下内容添加到您的构建文件来修复该订单:

 afterEvaluate { compileDebugAndroidTestKotlin.dependsOn assembleDebug }