菜单

集成测试

相关源文件

此页面记录了 Kotlin Gradle 插件使用的集成测试基础设施。这些测试跨不同的 Gradle 版本、JDK 版本和平台(JVM、JS、Native、Android 等)验证插件的行为。

集成测试对于确保 Kotlin Gradle 插件与各种 Gradle 版本之间的兼容性,以及测试跨不同平台和构建配置的功能至关重要。

集成测试架构概述

集成测试使用基于 JUnit 5 和 Gradle TestKit 的自定义测试框架。该基础设施提供了一个 DSL,用于设置测试项目、配置构建选项和执行测试构建。

来源

测试组织

集成测试按表示它们所测试组件的标签进行分类。这些标签映射到可以单独或分组运行的特定 Gradle 任务。

测试类别

来源

Gradle 版本矩阵

测试在 Gradle 版本矩阵上运行,以确保兼容性。支持以下 Gradle 版本:

Gradle 版本描述
7.0最低不支持版本(用于负面测试)
7.6.3最低支持版本
8.0.2 - 8.13支持的版本

测试系统还支持 AGP(Android Gradle 插件)版本兼容性测试,可与适当的 Gradle 版本组合进行。

来源

测试 DSL

测试框架提供了一个用于编写集成测试的 DSL。这个 DSL 可以轻松设置项目、配置构建以及断言构建结果。

项目设置

用于设置和运行测试的代码示例

来源

构建执行

测试可以执行带有特定参数的 Gradle 构建,并对构建结果进行断言,包括检查任务是否成功执行、任务输出以及构建输出消息。

来源

构建脚本注入

集成测试框架的一个强大功能是构建脚本注入,它允许测试在测试执行期间将代码注入构建脚本。

构建脚本注入示例

此功能允许测试:

  • 动态生成和修改构建脚本
  • 注入代码以应用插件和配置构建
  • 捕获构建执行的值并将其返回给测试

来源

高级测试功能

参数化测试

测试可以使用注解进行参数化,以针对不同的 Gradle 版本、JDK 版本和其他配置运行。

来源

环境配置

测试可以配置为使用特定的环境变量、内存限制和其他设置。

来源

运行集成测试

集成测试可以使用 Gradle 任务运行,并提供运行特定类别或单个测试的选项。

主测试任务

任务描述
kgpJvmTests运行所有 Kotlin/JVM 插件测试
kgpJsTests运行所有 Kotlin/JS 插件测试
kgpNativeTests运行所有 Kotlin/Native 插件测试
kgpMppTests运行所有多平台插件测试
kgpAndroidTests运行所有 Android 插件测试
kgpDaemonTests运行 Gradle 和 Kotlin 守护进程测试
kgpOtherTests运行其他插件(kapt、allopen 等)的测试
kgpAllParallelTests并行运行所有测试(守护进程测试除外)
check运行所有测试(包括以上所有测试)

要运行特定的测试类或方法

./gradlew :kotlin-gradle-plugin-integration-tests:kgpJvmTests --tests org.jetbrains.kotlin.gradle.SimpleKotlinGradleIT

来源

运行 Kotlin Native

运行 Kotlin Native 测试:

  1. local.properties 文件中添加 kotlin.native.enabled=true 来进行本地构建。
  2. 使用 -DkonanDataDirForIntegrationTests=/path/to/.konan 指定 Kotlin Native 目录。

来源

编写测试的最佳实践

  1. 使用 JUnit 5:所有测试都应使用 JUnit 5 平台。
  2. 按平台组织:为特定平台编写测试,而不是为 Gradle 功能编写测试。
  3. 拆分成更小的套件:不要创建一个庞大的测试类。
  4. 使用特定任务:尽可能使用更具体的任务,例如 assemble 而不是 build
  5. 添加有意义的描述:使用 @DisplayName 注解以获得更好的清晰度。
  6. 添加适当的标签:用正确的类别标记测试(例如,@JvmGradlePluginTests)。
  7. 使用现代 Gradle 语法:在测试项目中优先使用 Gradle 插件 DSL。

来源

调试集成测试

调试 Gradle 守护进程

在 IDE 中运行测试时,系统会自动配置构建以在进程内运行并启用调试。

调试测试中的 Kotlin 守护进程

  1. 在 IDE 中创建“远程 JVM 调试”配置。
  2. 将调试端口设置为 5005。
  3. 在调试器模式下选择“监听远程 JVM”。
  4. 可选地勾选“自动重启”。
  5. 在测试中指定调试端口:kotlinDaemonDebugPort = 5005
  6. 运行调试配置,然后运行测试。

来源

总结

Kotlin Gradle 插件集成测试框架提供了一种在不同环境中测试插件功能的全面方法。主要功能包括:

  1. 用于设置测试项目和运行构建的 DSL
  2. 支持针对多个 Gradle 和 JDK 版本进行测试
  3. 用于动态测试配置的构建脚本注入
  4. 用于特定平台的分类测试组织
  5. 用于验证构建结果的全面断言实用工具

通过利用此基础设施,开发人员可以确保 Kotlin Gradle 插件在各种配置和环境中正常工作。