project.kotlin { sourceSets { val commonMain = maybeCreate("commonMain") val iosMain = maybeCreate("iosMain") val jvmMain = maybeCreate("jvmMain") val commonIntegrationTest = maybeCreate("commonIntegrationTest").apply { dependencies { dependsOn(commonMain) } } project.kotlin { iosSimulatorArm64 { val iosTarget = this as KotlinNativeTarget compilations { val integrationTest = compilations.maybeCreate("integrationTest").apply { defaultSourceSet { dependsOn(iosMain) dependsOn(commonIntegrationTest) } binaries { test("integration") } project.tasks.register("iosSimulatorArm64IntegrationTest") { standalone.set(false) dependsOn("linkIntegrationDebugTestIosSimulatorArm64") group = JavaBasePlugin.VERIFICATION_GROUP description = "Runs integration tests for target 'ios' on an iOS simulator" executable(iosTarget.binaries.getTest("integration", NativeBuildType.DEBUG).outputFile) binaryResultsDirectory.set( project.layout.buildDirectory.dir( "reports/integrationTest/iosSimulatorArm64IntegrationTest/binary" ) ) reports { html.outputLocation.set( project.layout.buildDirectory.dir( "reports/integrationTest/iosSimulatorArm64IntegrationTest/html" ) ) junitXml.outputLocation.set( project.layout.buildDirectory.dir( "reports/integrationTest/iosSimulatorArm64IntegrationTest/xml" ) ) } } } val test by compilations.getting integrationTest.associateWith(test) } } } } }