Skip to content

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 AgentVerification Loop SkillKotlin 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 koverVerify

4. 输出示例

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

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 等协作,实现端到端的测试开发和质量保障。