I'm using this blog post to configure integration tests for a Spring Boot project, but I'm pretty stuck on declaring the source sets. I also found this post on StackOverflow, but I think I'm a bit further already.
My project structure is
project |_ src |_ main | |_ kotlin | |_ resources |_ testIntegration | |_ kotlin | |_ resources |_ test | |_ kotlin | |_ resources |_ build.gradle.kts |_ ... other files And build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { idea kotlin("jvm") id("org.springframework.boot") version "2.0.5.RELEASE" id("org.jetbrains.kotlin.plugin.spring") version "1.2.71" } fun DependencyHandlerScope.springBoot(module: String) = this.compile("org.springframework.boot:spring-boot-$module:2.0.5.RELEASE") fun DependencyHandlerScope.springBootStarter(module: String) = this.springBoot("starter-$module") dependencies { springBoot("devtools") springBootStarter("batch") springBootStarter("... spring boot dependencies") compile("... more dependencies") testCompile("... more test dependencies") } val test by tasks.getting(Test::class) { useJUnitPlatform { } } kotlin { sourceSets { val integrationTest by creating { kotlin.srcDir("src/testIntegration/kotlin") resources.srcDir("src/testIntegration/resources") } } } val integrationTestCompile by configurations.creating { extendsFrom(configurations["testCompile"]) } val integrationTestRuntime by configurations.creating { extendsFrom(configurations["testRuntime"]) } val testIntegration by tasks.creating(Test::class) { group = "verification" testClassesDirs = kotlin.sourceSets["integrationTest"].kotlin } idea { module { testSourceDirs.addAll(kotlin.sourceSets["integrationTest"].kotlin.srcDirs) testSourceDirs.addAll(kotlin.sourceSets["integrationTest"].resources.srcDirs) } } I think I'm pretty much in the right direction. At least it doesn't throw an exception any more :)
When I run the testIntegration task, I get the following output:
Testing started at 12:08 ... 12:08:49: Executing task 'testIntegration'... > Task :project:compileKotlin UP-TO-DATE > Task :project:compileJava NO-SOURCE > Task :project:processResources UP-TO-DATE > Task :project:classes UP-TO-DATE > Task :project:compileTestKotlin UP-TO-DATE > Task :project:compileTestJava NO-SOURCE > Task :project:processTestResources UP-TO-DATE > Task :project:testClasses UP-TO-DATE > Task :project:testIntegration BUILD SUCCESSFUL in 2s 5 actionable tasks: 1 executed, 4 up-to-date 12:08:51: Task execution finished 'testIntegration'. Also, IntelliJ doesn't recognise the testIntegration directories as Kotlin packages.