diff --git a/tests/buildTools/src/test/scala/tests/GradleBuildToolSuite.scala b/tests/buildTools/src/test/scala/tests/GradleBuildToolSuite.scala
index a99a4383..f9b23f8e 100644
--- a/tests/buildTools/src/test/scala/tests/GradleBuildToolSuite.scala
+++ b/tests/buildTools/src/test/scala/tests/GradleBuildToolSuite.scala
@@ -360,11 +360,40 @@ abstract class GradleBuildToolSuite(gradle: Tool.Gradle)
     gradleVersions = List(Gradle8, Gradle7, Gradle6),
     tools = List(Scala2_12_12)
   )
+
   checkGradleBuild(
     "kotlin",
-    """|/build.gradle
+    s"""|/build.gradle
        |plugins {
-       |    id 'org.jetbrains.kotlin.jvm' version '1.8.0'
+       |    id 'org.jetbrains.kotlin.jvm' version '${Kotlin18.version}'
+       |}
+       |repositories {
+       |    mavenCentral()
+       |}
+       |/src/main/java/foo/JExample.java
+       |package foo;
+       ||public class JExample {}
+       |/src/main/kotlin/foo/Example.kt
+       |package foo
+       |object Example {}
+       |/src/test/java/foo/JExampleSuite.java
+       |package foo;
+       |public class JExampleSuite {}
+       |/src/test/kotlin/foo/ExampleSuite.kt
+       |package foo
+       |class ExampleSuite {}
+       |""".stripMargin,
+    expectedSemanticdbFiles = 4,
+    gradleVersions = List(Gradle6, Gradle7, Gradle8),
+    tools = List(Kotlin18)
+  )
+
+  checkGradleBuild(
+    "kotlin-k2",
+    s"""|/build.gradle.kts
+       |plugins {
+       |    `kotlin-dsl`
+       |    kotlin("jvm") version "${Kotlin192.version}"
        |}
        |repositories {
        |    mavenCentral()
@@ -383,9 +412,11 @@ abstract class GradleBuildToolSuite(gradle: Tool.Gradle)
        |class ExampleSuite {}
        |""".stripMargin,
     expectedSemanticdbFiles = 4,
-    gradleVersions = List(Gradle6, Gradle7)
+    gradleVersions = List(Gradle8),
+    tools = List(Kotlin192)
   )
 
+
   checkGradleBuild(
     "implementation-deps",
     """|/settings.gradle
diff --git a/tests/buildTools/src/test/scala/tests/GradleBuildToolSuiteBase.scala b/tests/buildTools/src/test/scala/tests/GradleBuildToolSuiteBase.scala
index 516d90b2..b0a264cd 100644
--- a/tests/buildTools/src/test/scala/tests/GradleBuildToolSuiteBase.scala
+++ b/tests/buildTools/src/test/scala/tests/GradleBuildToolSuiteBase.scala
@@ -14,7 +14,10 @@ abstract class GradleBuildToolSuiteBase(gradle: Tool.Gradle)
   }
 
   def createEmptyBuildScript(): Unit = {
-    val script = workingDirectory.resolve("build.gradle")
+    // We're using settings.gradle instead of build.gradle because it's enough for
+    // gradle to create a wrapper, and doesn't conflict if the test case uses build.gradle.kts.
+    // Turns out gradle produces a very confusing error message if you have both build.gradle and build.gradle.kts
+    val script = workingDirectory.resolve("settings.gradle")
     Files.createDirectories(script.getParent)
     Files.write(
       script,
diff --git a/tests/buildTools/src/test/scala/tests/Tool.scala b/tests/buildTools/src/test/scala/tests/Tool.scala
index 0b1f56d2..706ad78b 100644
--- a/tests/buildTools/src/test/scala/tests/Tool.scala
+++ b/tests/buildTools/src/test/scala/tests/Tool.scala
@@ -57,6 +57,12 @@ object Tool {
   case object Scala211 extends Scala("2.11.9", atMostJava(11))
   case object Scala3 extends Scala("3.3.3", noRestrictions)
 
+  sealed abstract class Kotlin(version: String, support: JVMSupport)
+      extends Tool("kotlin", version, support)
+  // See https://stackoverflow.com/a/77179226
+  case object Kotlin18 extends Kotlin("1.8.0", atMostJava(19))
+  case object Kotlin192 extends Kotlin("1.9.20", atMostJava(21))
+
   sealed abstract class Mill(version: String, support: JVMSupport)
       extends Tool("mill", version, support)
   // See https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html#build-tool-compatibility-table