在 Android Studio 中对测试源使用 Kotlin 编译器选项

Use Kotlin compiler options for test sources in Android Studio

在我的测试源中,我想使用一些实验性的 Kotlin 编译器功能,以便在 Android Studio 中看不到针对它们的 lint 警告和错误。例如,我想将以下 Kotlin 选项应用于所有测试源。

compileTestKotlin {
  kotlinOptions {
    freeCompilerArgs += [
        '-Xopt-in=kotlin.time.ExperimentalTime',
        '-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi',
    ]
  }
}

(source)

开箱即用,这在 Android 项目中不起作用,因为没有 compileTestKotlin 方法。根据 kotlin-android Gradle plugin docs,应该可以在 afterEvaluate 块中为 compileVariantNameKotlin 执行此操作,例如:

afterEvaluate {
  compileDebugUnitTestKotlin {
    kotlinOptions {
      freeCompilerArgs += [
        '-Xopt-in=kotlin.time.ExperimentalTime',
        '-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi',
      ]
    }
  }
}

compileReleaseUnitTestKotlin 类似)

虽然这有效(构建和测试 运行 并顺利通过),但在 Android Studio 中似乎没有任何效果:实验性编译器功能的用法仍然标记为 warnings/errors.

如何以 AS 识别和使用它们的方式为我的测试源启用这些编译器功能?

我在 Android Studio 4.2.2、AGP 4.2.0 版、Kotlin 1.5.10 版上工作:

android {
    testOptions {
        kotlinOptions {
            freeCompilerArgs += [
                '-Xopt-in=kotlin.time.ExperimentalTime',
                '-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi',
            ]
        }
    }
}