kotlin-testing
作者 affaan-mkotlin-testing 是一份面向 Kotlin 测试自动化的实用指南,涵盖 Kotest、MockK、协程测试、基于属性的测试和 Kover 覆盖率。使用这个 kotlin-testing 技能,可以遵循更贴近 TDD 的工作流,编写更清晰的单元测试和组件测试,并在 mock 依赖或测试挂起代码时减少猜测。
这个技能得分 78/100,值得收录:它为 Kotlin 测试提供了清晰的工作流、具体的工具选择,以及足够的结构,适合做安装决策参考。目录用户可以把它看作一个扎实但还未完全打磨的技能,因为它缺少配套文件和一些能进一步降低接入门槛的工程化包装。
- 针对 Kotlin 测试创建、覆盖率、TDD 和基于属性的测试,给出了清晰且容易触发的使用场景。
- 工作流很明确:识别代码、编写 Kotest spec、用 MockK 进行 mock、执行 RED/GREEN、重构,并检查 Kover 覆盖率。
- 内容篇幅较大,并带有详细示例和仓库/文件引用,说明它不是空壳占位内容。
- 没有安装命令或支持文件,因此设置和集成可能需要更多人工理解。
- 包含占位标记('todo'),说明部分章节可能不完整,或在边界场景下可靠性较弱。
kotlin-testing 技能概览
kotlin-testing 是做什么的
kotlin-testing 技能是一份面向 Kotlin 项目的实用测试编写与优化指南。它聚焦的是大多数团队真正需要的工作:选择合适的 Kotest 风格、用 MockK Mock 依赖、正确测试 coroutine,以及在不把测试代码写成样板代码的前提下使用 property-based tests 和 Kover 覆盖率。
谁应该安装它
如果你正在为 Kotlin 应用补测试、统一团队的测试写法,或者想要一个符合 Kotlin 习惯的 TDD 工作流,就应该安装 kotlin-testing 技能。它尤其适合 JVM Kotlin 项目里的开发者,这类场景更需要可复用的模式,而不是临时拼出来的测试提示词。
最适合放在什么场景
这个技能最适合用于目标是可靠的 unit test 或 component test 覆盖,而不是端到端框架搭建的测试自动化任务。当你需要写第一条测试、重构脆弱断言,或者想以 Kotlin 特有的方式理解如何用 mock 和 coroutine 隔离代码时,它会特别有用。
如何使用 kotlin-testing 技能
在你的工作区安装 kotlin-testing
先按照该技能的仓库安装流程完成安装,然后在请求测试代码之前,把你的 agent 指向 skills/kotlin-testing 上下文。仓库里给出的基础安装命令是:
npx skills add affaan-m/everything-claude-code --skill kotlin-testing
为了获得最佳效果,最好把它安装在 Kotlin 代码实际所在的同一个工作区里,这样技能就能直接针对真实文件、包名和构建工具发挥作用。
给技能一个可测试的 Kotlin 目标
kotlin-testing 技能在你的提示词明确写出一个具体目标和一个期望测试结果时效果最好。好的输入包括类名或函数名、你当前使用的框架,以及 coroutine 行为、mock 规则或覆盖率门槛等约束。
示例提示词结构:
Use kotlin-testing to write Kotest tests for UserService.createUser. Mock the repository with MockK, cover success and duplicate-email failure paths, and keep the tests compatible with our Gradle/Kover setup.
先读对文件
先从 SKILL.md 开始,然后检查 README.md、AGENTS.md、metadata.json,以及如果存在的话,rules/、resources/、references/ 或 scripts/ 目录。对这个仓库来说,SKILL.md 是最主要的准确信息来源,所以最快的路径是先读它的 “When to Use”、“How It Works” 和 “Examples” 部分,再开始起草提示词。
用工作流,不只是照抄片段
这个仓库围绕测试优先流程来组织:先确定目标,写 Kotest spec,Mock 依赖,运行失败的测试,实现代码,然后用 ./gradlew koverHtmlReport 验证覆盖率。这样一来,当你需要的是一套执行方案,而不只是几条示例断言时,这个技能才真正好用。
kotlin-testing 技能 FAQ
kotlin-testing 只是给 TDD 用的吗?
不是。TDD 是这个技能的默认工作流,但当你要给已有的 Kotlin 代码补测试时,这些模式同样很有用。如果你已经有实现代码,就可以用这个技能补充有针对性的覆盖,并让 mock 写得更干净。
它能替代普通提示词吗?
当你需要 Kotlin 特有的决策时,它比普通提示词更有帮助:比如该选哪种 Kotest 风格、怎么 mock coroutine,以及如何理解覆盖率。通用提示词也能写测试,但 kotlin-testing 能减少你在框架匹配和测试结构上的试错成本。
它适合新手吗?
适合,只要你能描述一个 Kotlin unit 或 class,并且想要一份带引导的测试计划。如果你还不知道自己的构建系统、还没有测试目标,或者需要的是更宏观的架构建议而不是具体测试代码,它就没那么合适。
什么情况下不该用 kotlin-testing?
不要把它当成浏览器自动化、API contract testing,或者非 Kotlin 测试栈的替代品。如果你的问题主要是基础设施、容易抖动的集成环境,或者测试数据管理,那么比起 kotlin-testing,更广泛的测试自动化技能会更合适。
如何改进 kotlin-testing 技能
给出比“写测试”更强的上下文
kotlin-testing 想要更好的结果,关键是输入要精确:被测类、公开方法、重要分支,以及你希望对齐的现有测试风格。还要说明你想用 Kotest 的 StringSpec、FunSpec 还是 BehaviorSpec,因为这会直接影响可读性和结构。
一开始就说清楚硬性约束
如果代码里用了 suspending functions、flows、private collaborators,或者有严格的覆盖率门槛,一定要在生成之前说明。比如:Use MockK for the repository, test this suspend function with coroutine test support, and keep the assertions compatible with Kover coverage goals.
要求覆盖失败路径
这个技能最有价值的地方,不只是“写一个能通过的测试”,而是同时补上 happy path 和 failure path。如果函数可能返回 null、抛异常、重试,或者校验输入,就要明确点出这些场景,这样生成出来的测试套件才真正可用于决策。
通过收紧测试设计来迭代
拿到第一版输出后,可以围绕缺失内容继续收紧提示词:边界条件、命名规范、fixture 设置,或者容易抖动的依赖。kotlin-testing 最快的改进方式,是先审查生成的 spec,找出过度 mock 或覆盖不足的地方,然后针对你还需要的那条具体分支,要求它做一次更窄的重写。
