Agent skill · software engineering · affaan-m
kotlin-testing
使用Kotest、MockK、协程测试、基于属性的测试和Kover覆盖率的Kotlin测试模式。遵循TDD方法论和地道的Kotlin实践。
Why this skill is useful
Provides detailed patterns and examples for Kotlin testing using Kotest and MockK, which the AI wouldn't reliably generate on its own.
What it needs
Requires gradle installed locally. About 8k tokens when loaded. Last updated 2026-08-06. 238,342 stars on the source repository.
What this skill does
Kotlin 测试模式 遵循 TDD 方法论,使用 Kotest 和 MockK 编写可靠、可维护测试的全面 Kotlin 测试模式。 何时使用 编写新的 Kotlin 函数或类 为现有 Kotlin 代码添加测试覆盖率 实现基于属性的测试 在 Kotlin 项目中遵循 TDD 工作流 为代码覆盖率配置 Kover 工作原理 1. 确定目标代码 — 找到要测试的函数、类或模块 2. 编写 Kotest 规范 — 选择与测试范围匹配的规范样式(StringSpec、FunSpec、BehaviorSpec) 3. 模拟依赖项 — 使用 MockK 来隔离被测单元 4. 运行测试(红色阶段) — 验证测试是否按预期失败 5. 实现代码(绿色阶段) — 编写最少的代码以使测试通过 6. 重构 — 改进实现,同时保持测试通过 7. 检查覆盖率 — 运行 ./gradlew koverHtmlReport 并验证 80%+ 的覆盖率 示例 以下部分包含每个测试模式的详细、可运行示例: 快速参考 Kotest 规范 — Kotest 规范样式 中的 StringSpec、FunSpec、BehaviorSpec、DescribeSpec 示例 模拟 — MockK 中的 MockK 设置、协程模拟、参数捕获 TDD 演练 — Kotlin 的 TDD 工作流 中 EmailValidator 的完整 RED/GREEN/REFACTOR 周期 覆盖率 — Kover 覆盖率 中的 Kover 配置和命令 Ktor 测试 — Ktor testApplication 测试 中的 testApplication 设置 Kotlin 的 TDD 工作流 RED-GREEN-REFACTOR 周期 Kotlin 中逐步进行 TDD Kotest 规范样式 StringSpec(最简单) FunSpec(类似 JUnit) BehaviorSpec(BDD 风格) DescribeSpec(RSpec 风格) Kotest 匹配器 核心匹配器 自定义匹配器 MockK 基本模拟 协程模拟 参数捕获 间谍和部分模拟 协程测试 用于挂起函数的 runTest 测试 Flow TestDispatcher 基于属性的测试 Kotest 属性测试 自定义生成器 数据驱动测试 Kotest 中的 withData 测试生命周期和固件 BeforeTest / AfterTest Kotest 扩展 Kover 覆盖率 Gradle 配置 覆盖率命令 覆盖率目标 代码类型 目标 ----------- -------- 关键业务逻辑 100% 公共 API 90%+ 通用代码 80%+ 生成的 / 配置代码 排除 Ktor testApplication 测试 测试命令 最佳实践 应做: 先写测试(TDD) 在整个项目中一致地使用 Kotest 的规范样式 对挂起函数使用 MockK 的 coEvery/coVerify 对协程测试使用 runTest 测试行为,而非实现 对纯函数使用基于属性的测试 为清晰起见使用 data class 测试固件 不应做: 混合使用测试框架(选择 Kotest 并坚持使用) 模拟数据类(使用真实实例) 在协程测试中使用 Thread.sleep()(改用 advanceTimeBy) 跳过 TDD 中的红色阶段 直接测试私有函数 忽略不稳定的测试 与 CI/CD 集成 记住:测试就是文档。它们展示了你的 Kotlin 代码应如何使用。使用 Kotest 富有表现力的匹配器使测试可读,并使用 MockK 来清晰地模拟依赖项。
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills affaan-m/kotlin-testing--a41f87