【问题标题】:Android Espresso tests (written in Kotlin) cannot see main classes and packagesAndroid Espresso 测试(用 Kotlin 编写)看不到主类和包
【发布时间】:2016-12-05 19:11:10
【问题描述】:

我对 Kotlin Espresso 测试有疑问。我在模块的构建脚本中应用了Kotlin-Android Gradle 插件,并且测试在 Android Studio 中运行没有问题(测试类由AndroidJUnit4 runner 注释和运行),但是从终端运行 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"
]

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

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

【问题讨论】:

    标签: android kotlin android-espresso


    【解决方案1】:

    kotlin test compile 任务需要在相关 assemble 任务之后运行,类引用才能正常工作。

    对于assembleDebugAndroidTest,请确保首先运行assembleDebug

    在命令行中,可以使用 gradle "dry run" 快速检查任务的顺序,如下所示:

    ./gradlew assembleDebugAndroidTest -m
    

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

    afterEvaluate {
      compileDebugAndroidTestKotlin.dependsOn assembleDebug
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 2020-09-15
      相关资源
      最近更新 更多