Split code between unit test and benchmark tests when using kotlin

Similar question: Sharing code between Android instrument tests and unit tests in Android Studio

My setup is like this:

  • src/test

    containing unit tests. These can be Java or Kotlin classes
  • src/androidTest

    which contains control tests. These can be Java or Kotlin classes
  • src/sharedTest

    is a folder that contains a bunch of utils that are shared between hardware and benchmark tests.

This share is defined in gradle as:

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

      

This allows any Java class in src/test

or src/androidTest

access to utils. but not Kotlin unit tests. My guess is that they are not added to the original sets.

My question is, how can I add them? I tried:

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

      

But it doesn't work.

+3


source to share


2 answers


The default setting would be to make the set of Kotlin sources visible to the Java compiler and 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'
    }
}

      



You don't need to customize the Kotlin source sets yourself.

+1


source


If your project has java and kotlin code , the key should have:

src/{folderName}/java

      

and

src/{folderName}/kotlin

      

Where {folder_name} is test, androidTest, sharedTest, or whatever.



I use:

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"
    }
}

      

This is a bit of an inconsistency, as you can use all java and kotlin code under the same:

main/java

      

Catalog.

0


source







All Articles