SuperAPI AI 工具集

kotlin-testing

测试与质量

查看项目

更新于 10-15 10:24

技能介绍

用途

本技能提供一套完整的 Kotlin 测试模式,用于编写可靠、可维护的测试,并遵循 TDD(测试驱动开发)方法论,主要工具为 Kotest 与 MockK。

适用场景包括:

  • 编写新的 Kotlin 函数或类
  • 为既有 Kotlin 代码补充测试覆盖
  • 实现属性测试(property-based testing)
  • 在 Kotlin 项目中遵循 TDD 工作流
  • 配置 Kover 进行代码覆盖率统计

主要能力

TDD 工作流

遵循 RED-GREEN-REFACTOR 循环:先写失败测试(RED),再写最小实现使其通过(GREEN),然后在保持测试通过的前提下重构(REFACTOR),循环推进下一个需求。资料以 EmailValidator 为例,展示了从定义签名、编写失败测试、运行验证失败、实现最小代码、运行验证通过到重构的完整步骤。

Kotest 规格风格

  • StringSpec:最简洁的写法,直接以字符串描述测试。
  • FunSpec:类似 JUnit 的风格,使用 test 块。
  • BehaviorSpec:BDD 风格,使用 Given/When/Then。
  • DescribeSpec:RSpec 风格,使用 describe/context/it。

Kotest 匹配器

涵盖相等、字符串、集合、空值、类型、数字、异常等核心匹配器,并支持通过实现 Matcher 接口编写自定义匹配器。

MockK

包括基础模拟、relaxed 模拟、协程模拟(coEvery/coVerify/coAnswers)、参数捕获(slot/capture)、Spy 与部分模拟(spyk)。

协程测试

使用 runTest 测试挂起函数、超时场景,测试 Flow(take/toList、防抖场景),以及使用 StandardTestDispatcher 与 advanceTimeBy/advanceUntilIdle 控制执行时序。

属性测试

使用 forAll、checkAll 与 Arb 生成器验证通用性质(如字符串反转的幂等性、列表排序的幂等性、序列化往返一致性),并支持通过 Arb.bind 构建自定义生成器。

数据驱动测试

使用 withData 提供多组输入与期望值,支持自定义名称函数。

测试生命周期与夹具

使用 beforeSpec/afterSpec/beforeTest 管理数据库等资源,并可通过实现 BeforeSpecListener/AfterSpecListener 编写可复用的测试扩展。

Kover 覆盖率

通过 Gradle 配置 Kover,运行 ./gradlew koverHtmlReport 生成报告,并验证 80% 以上覆盖率。

使用方式

资料给出的典型流程为:识别目标代码 → 选择合适的 Kotest 规格风格编写测试 → 用 MockK 隔离被测单元 → 运行测试确认失败(RED)→ 实现最小代码(GREEN)→ 重构 → 运行 ./gradlew koverHtmlReport 检查覆盖率。

适用场景

适用于 Kotlin 项目的单元测试、协程与 Flow 测试、属性测试、数据驱动测试,以及需要覆盖率门禁的持续集成场景。

限制

资料未提供该技能的安装命令、依赖版本、支持的 Kotlin 或 Gradle 版本范围、平台限制、收费信息及性能数据,这些内容暂未提供。