我对Kotlin Espresso测试有一个问题。我在模块的构建脚本中应用了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
}
Project的构建脚本:
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在没有任何问题的情况下运行测试的事实令人困惑。
答案 0 :(得分:1)
kotlin测试编译任务需要在类引用的相关汇编任务之后运行才能正常工作。
对于assembleDebugAndroidTest
,请确保先运行assembleDebug
。
从命令行,可以使用gradle" dry run"快速检查任务的顺序。像这样:
./gradlew assembleDebugAndroidTest -m
如果assembleDebug
的顺序不正确。您可以通过将以下内容添加到构建文件来修复订单:
afterEvaluate {
compileDebugAndroidTestKotlin.dependsOn assembleDebug
}