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.
source to share
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.
source to share
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.
source to share