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

时间:2017-06-12 18:58:12

标签: 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 类访问utils。但不是Kotlin单元测试。我的假设是它们没有被添加到sourceSets。

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

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

但这似乎不起作用。

2 个答案:

答案 0 :(得分:1)

默认设置是让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源集。

答案 1 :(得分:0)

如果您的项目同时包含 java kotlin 代码,则关键是:

src/{folderName}/java

src/{folderName}/kotlin

其中{folderName}是:test,androidTest,sharedTest或其他。

我用:

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

这是一些不一致的原因,因为您可以将所有java和kotlin代码保持在相同的位置:

main/java

。目录