# Tdd

> 测试驱动开发。当用户想要以测试优先的方式构建功能或修复缺陷、提及 "red-green-refactor"，或想要集成测试时使用。

- **Type:** Skill
- **Install:** `agentstack add skill-wenwuzhidao-mattpocock-skills-zh-tdd`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [WenWuZhiDao](https://agentstack.voostack.com/s/wenwuzhidao)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [WenWuZhiDao](https://github.com/WenWuZhiDao)
- **Source:** https://github.com/WenWuZhiDao/mattpocock-skills-zh/tree/main/skills/engineering/tdd

## Install

```sh
agentstack add skill-wenwuzhidao-mattpocock-skills-zh-tdd
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 测试驱动开发

TDD 就是红 → 绿的循环。本技能是让这个循环产出值得保留的测试的参考：什么是好测试、测试放在哪里、反模式，以及循环的规则。每一节都适用于每一轮循环——在循环之前和循环之中查阅它们，而不是在之后。

在探索代码库时，请阅读 `CONTEXT.md`（如果存在），以便测试名称和接口词汇与项目的领域语言匹配，并尊重你所触及区域内的 ADR。

## 什么是好测试

测试通过公共接口验证行为，而不是实现细节。代码可以彻底改变；测试不应改变。好的测试读起来像一份规格说明——"用户可以用有效购物车结账"准确地告诉你存在什么能力——并且它能在重构中存活，因为它不关心内部结构。

参见 [tests.md](tests.md) 中的示例，以及 [mocking.md](mocking.md) 中的 mock 准则。

## 接缝——测试放在哪里

**接缝**（seam）是你进行测试的公共边界：你在此观察行为而不深入内部的接口。测试位于接缝处，绝不针对内部实现。

**只在事先约定的接缝处测试。** 在编写任何测试之前，先写下受测的接缝并与用户确认。不得在未经确认的接缝处编写任何测试。你无法测试一切——事先约定接缝，正是让测试精力落在关键路径和复杂逻辑上，而非每一个边界情况的方法。

问：“公共接口是什么，我们应该测试哪些接缝？”

## 反模式

- **与实现耦合** —— mock 内部协作者、测试私有方法，或通过旁路验证（查询数据库而不是使用接口）。特征是：当你重构但行为并未改变时，测试却坏了。
- **同义反复** —— 断言以代码相同的方式重新计算预期值（`expect(add(a, b)).toBe(a + b)`、一份以相同方式手工推导出的快照、一个断言等于自身的常量），因此它天生就会通过，永远无法与代码产生分歧。预期值必须来自独立的事实来源——一个已知正确的字面量、一个手工推演的示例、规格说明。
- **水平切片** —— 先写完所有测试，再写完所有实现。批量测试验证的是_想象中的_行为：你测试的是事物的_形态_而非面向用户的行为，测试对真实变更变得不敏感，而且你在理解实现之前就固化了测试结构。改为按**垂直切片**工作——一个测试 → 一次实现 → 重复，每个测试都是一枚**曳光弹**，根据上一轮循环所学到的做出回应。

## 循环的规则

- **先红后绿。** 先写会失败的测试，然后只写刚好让它通过的代码。不要预测未来的测试或添加投机性的功能。
- **一次一个切片。** 每轮循环一个接缝、一个测试、一个最小实现。
- **重构不属于循环。** 它属于评审阶段（参见 `review` 技能），而不是红 → 绿的实现循环。

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [WenWuZhiDao](https://github.com/WenWuZhiDao)
- **Source:** [WenWuZhiDao/mattpocock-skills-zh](https://github.com/WenWuZhiDao/mattpocock-skills-zh)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-wenwuzhidao-mattpocock-skills-zh-tdd
- Seller: https://agentstack.voostack.com/s/wenwuzhidao
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
