Appearance
Everything Claude Code 的 kotlin-testing Skill 为 Kotlin 项目带来一套生产级测试体系,集成 Kotest(多种 Spec 风格)、MockK(Mock/Spy/协程支持)、属性测试、Kover 覆盖率与 TDD 工作流。通过自动化激活、示例驱动和覆盖率门控,Skill 让 AI 编程助手能高效生成、维护和验证高质量 Kotlin 测试代码,显著提升开发效率与代码可靠性,适用于新功能开发、遗留代码补测、CI/CD 流水线和团队协作场景。
Everything Claude Code Kotlin Testing Skill:Kotest、MockK、属性测试与 Kover 覆盖率测试体系
在现代 Kotlin 项目中,如何系统性地写好测试、Mock 依赖、保障覆盖率并支持持续集成,是实现高质量交付的关键。Everything Claude Code 的 kotlin-testing Skill 正是为此设计——它将 Kotest、MockK、属性测试、协程测试和 Kover 覆盖率有机整合,形成一套面向 AI 编程助手(如 Claude Code、Codex、Cursor 等)的自动化测试能力。无论是 TDD 新开发、遗留代码补测、CI 门控还是团队协作,Skill 都能让 AI 生成和维护符合最佳实践的 Kotlin 测试代码,极大提升开发效率和可靠性。
本指南将带你从 Skill 的激活场景、核心流程、典型用法到与其他 Agent/Skill 的协作,全面掌握如何在实际项目中用好 kotlin-testing Skill。
1. 这个 Skill 解决什么问题?
传统做法的痛点:
- 手写测试样板多,风格不统一,Mock 协程和依赖麻烦
- 难以保证测试覆盖率,CI 门控配置繁琐
- 新成员难以快速上手测试体系,TDD 流程难落地
- AI 编程助手生成的测试代码质量参差不齐,缺乏覆盖率反馈
kotlin-testing Skill 的优势:
- 规范化 Kotest 测试风格(StringSpec、FunSpec、BehaviorSpec、DescribeSpec)
- MockK 支持同步/异步依赖 Mock、Spy、参数捕获
- 原生集成属性测试(Property-based Testing)、数据驱动测试
- 协程测试(runTest、TestDispatcher、Flow 测试)一站式覆盖
- Kover 覆盖率自动配置,80%+ 门槛校验,CI/CD 一键集成
- TDD RED-GREEN-REFACTOR 流程自动化,保证测试先行
- 输出可读性强、易维护的测试代码,便于团队协作与代码审查
Skill 让 AI 助手不仅能“补测”,还能驱动整个测试开发流程,真正实现测试自动化与质量门控。
2. 触发条件与激活场景
kotlin-testing Skill 会在以下场景自动激活:
- 新增 Kotlin 函数、类、模块时,AI 自动建议并生成对应的 Kotest 测试
- 代码审查或 PR 检查发现测试覆盖率不足时,Skill 自动补全测试用例
- 用户通过 MCP/Command 明确要求“为 X 写单元测试/属性测试/集成测试”
- 检测到项目引入 Kover、Kotest、MockK 依赖时,Skill 自动启用覆盖率门控与最佳实践
- TDD/测试先行开发流程下,Skill 驱动 RED-GREEN-REFACTOR 循环,保证每一功能有测试护航
Skill 也可与 TDD Guide Agent、Verification Loop Skill、Kotlin Reviewer Agent 等协作,实现端到端的测试开发和质量保障。
3. 使用流程 Step by Step
Step 1:识别待测代码
- AI 自动分析本次变更或用户指定的函数、类、模块,确定测试目标
- 支持新开发、遗留代码补测、接口/属性/集成测试等多种场景
Step 2:生成 Kotest 测试用例
- Skill 根据目标类型自动选择合适的 Spec 风格(StringSpec、FunSpec、BehaviorSpec、DescribeSpec)
- 自动引入常用 matchers、数据驱动(withData)、属性测试模板
- 代码示例:
kotlin
class CalculatorTest : StringSpec({
"add two positive numbers" {
Calculator.add(2, 3) shouldBe 5
}
"add zero" {
Calculator.add(0, 5) shouldBe 5
}
})Step 3:Mock 依赖与协程
- Skill 自动识别依赖注入/外部服务,生成 MockK mock/spyk 代码
- 支持 coEvery/coVerify 处理 suspend 函数和协程场景
- 参数捕获、Spy、部分 Mock 也能一键生成
- 代码示例:
kotlin
val repository = mockk<UserRepository>()
coEvery { repository.findById("1") } returns User(id = "1", name = "Alice")
coVerify { repository.findById("1") }Step 4:TDD 流程驱动
- RED:先生成失败的测试用例
- GREEN:实现最小通过代码
- REFACTOR:重构并保持测试通过
- Skill 可自动提示并切换阶段,保证 TDD 落地
- 代码示例(EmailValidator):
kotlin
// Step 2: 写 RED 测试
"valid email returns success" {
validateEmail("user@example.com").shouldBeSuccess("user@example.com")
}
// Step 4: 实现通过测试的最小代码
fun validateEmail(email: String): Result<String> {
if (email.isBlank()) return Result.failure(...)
...
}Step 5:属性测试与数据驱动
- Skill 自动识别纯函数、数据转换等场景,生成 Kotest 属性测试(forAll、checkAll)
- 支持自定义数据生成器、序列化 roundtrip、排序等通用性质验证
- 代码示例:
kotlin
test("string reverse is involutory") {
forAll<String> { s -> s.reversed().reversed() == s }
}Step 6:协程与 Flow 测试
- Skill 自动应用 runTest、TestDispatcher、advanceTimeBy 等模式
- 支持 Flow/Channel 测试、debounce/throttle 等异步场景
- 代码示例:
kotlin
runTest {
val emissions = service.observeUsers().take(3).toList()
emissions shouldHaveSize 3
}Step 7:Kover 覆盖率校验
- Skill 自动配置 build.gradle.kts,集成 Kover 插件、过滤规则和覆盖率门槛(如 80%+)
- 支持一键运行覆盖率报告、CI 校验、HTML/XML 输出
- 代码示例:
kotlin
kover {
reports {
total {
html { onCheck = true }
}
verify {
rule { minBound(80) }
}
}
}- 常用命令:
bash
./gradlew koverHtmlReport # 生成 HTML 覆盖率报告
./gradlew koverVerify # 校验覆盖率门槛Step 8:集成到 CI/CD
- Skill 自动生成 GitHub Actions/Jenkins 等流水线配置
- 支持测试、覆盖率、静态分析(detekt/ktlint)全流程自动化
- 代码示例(GitHub Actions):
yaml
- name: Run tests with coverage
run: ./gradlew test koverXmlReport
- name: Verify coverage
run: ./gradlew koverVerify4. 输出示例
Skill 生成的测试代码具有如下特点:
- 结构清晰、Spec 风格统一、易读易维护
- Mock、协程、属性测试、数据驱动等模式自动集成
- 覆盖率报告自动生成,CI 门控一键配置
示例输出片段:
kotlin
class UserServiceTest : FunSpec({
val repository = mockk<UserRepository>()
val service = UserService(repository)
test("getUser returns user when found") {
coEvery { repository.findById("1") } returns User(id = "1", name = "Alice")
val result = service.getUser("1")
result shouldBe User(id = "1", name = "Alice")
}
test("getUser throws when not found") {
coEvery { repository.findById("999") } returns null
shouldThrow<UserNotFoundException> { service.getUser("999") }
}
})5. 常见配套 Agent 与协作 Skill
- Kotlin Reviewer Agent:自动审查测试代码质量、规范与安全性
- TDD Guide Agent:强制测试先行、确保 80%+ 覆盖率的 TDD 流程
- Verification Loop Skill:端到端自动化验证循环,确保每次变更均有测试护航
- Kover 配置与覆盖率 Skill:与 kotlin-testing Skill 协同,自动调整覆盖率门槛和过滤规则
- CI/CD 集成 Agent:自动生成和维护测试、覆盖率、静态分析流水线配置
Skill 还能与 Everything Claude Code 完全指南 中的其他测试、代码审查、规范类 Skill 协作,实现一体化的 AI 辅助开发与质量保障体系。
6. 最佳实践与注意事项
- 坚持 TDD 流程,优先写测试再实现功能
- 统一使用 Kotest,避免多测试框架混用
- Mock 只用于接口/依赖,数据类用真实实例
- 协程测试用 runTest,避免 Thread.sleep
- 定期关注覆盖率报告,及时补测关键路径
- 测试代码即文档,命名与断言要表达业务意图
- 避免测试私有函数,优先测试外部行为
- 发现 flaky 测试及时修复,保障 CI 稳定
FAQ
Q: kotlin-testing Skill 支持哪些类型的测试? A: Skill 支持单元测试、集成测试、属性测试、数据驱动测试、协程和 Flow 测试,自动集成 MockK、Kover 覆盖率等高级特性。
Q: Skill 生成的测试代码如何保证覆盖率? A: Skill 自动配置 Kover,设置覆盖率门槛(如 80%+),并在 CI/CD 阶段自动校验,覆盖率不足会阻断合并。
Q: 可以和其他 Agent/Skill 组合使用吗? A: 可以,推荐与 TDD Guide Agent、Verification Loop Skill、Kotlin Reviewer Agent 等协作,实现端到端的测试开发和质量保障。