java - 使用 kotlin 时在单元测试和仪器测试之间共享代码

标签 java android unit-testing kotlin

类似问题:Sharing code between Android Instrumentation Tests and Unit Tests in Android Studio

我的设置如下:

  • src/test 包含单元测试的文件夹。这些可以是 Java 或 Kotlin 类
  • src/androidTest 包含仪器测试。这些也可以是 Java 或 Kotlin 类
  • src/sharedTest 是一个文件夹,其中包含一组在单元测试和仪器测试之间共享的实用程序。

本次分享在gradle中定义为:

sourceSets {
    test.java.srcDirs += 'src/sharedTest/java'
    androidTest.java.srcDirs += 'src/sharedTest/java'
}

这允许 src/testsrc/androidTest 中的任何 Java 类访问实用程序。但不是 Kotlin 单元测试。我的假设是它们没有添加到 sourceSets。

我的问题是:如何添加它们?我试过:

sourceSets {
    test.kotlin.srcDirs += 'src/sharedTest/java'
}

但这似乎行不通。

最佳答案

默认设置将使 Kotlin 源代码集对 Java 编译器和 IDE 可见:

android {
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
        test.java.srcDirs += 'src/test/kotlin'
        test.java.srcDirs += 'src/sharedTest/java'
        androidTest.java.srcDirs += 'src/sharedTest/java'
    }
}

您无需自行配置 Kotlin 源代码集。

关于java - 使用 kotlin 时在单元测试和仪器测试之间共享代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44506838/

相关文章:

java - 为什么 Pattern.matches ("[a*mn]","aaaa") 不返回 true?获得所需输出的正确代码应该是什么?

java - 使用 TestNG 测试数据库不回滚

java - 使用 ContributesAndroidInjector 提供 Activity

android -> 无法在 :/opt/android-sdk-linux 中找到哈希字符串 'android-26' 的目标

java - 如何在单元测试时重新初始化静态 final

python - 与其他模块一起对 main.py 进行单元测试

java - Spring Cloud Ribbon 抛出异常,名为“没有可用于 serverurl 的实例”

java - Android 强制关闭 JodaTime

java - Android:使用AudioTrack和Socket手动高效地流音频

javascript - 如何 stub Node.js MongoDB 链式 fn 调用来模拟我的最终结果?