diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 63eb5b9..13fbccd 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -37,14 +37,26 @@ tests/ # 测试目录(镜像 src 结构) ## 开发命令 ```bash -bun test # 运行全部测试 -bun test tests/core/ # 运行指定目录测试 +bun test # 运行单元/集成测试(排除 agent e2e 测试) +bun run test:e2e # 运行 agent 端到端测试(Tier 1 + 2,< 5s) +bun run test:e2e:llm # 运行 LLM-as-Judge 测试(Tier 3,需设置环境变量) +bun test tests/core/ # 运行指定目录测试 bun src/cli.ts init opencode # 测试 init 命令 bun src/cli.ts plan <变更名> <文档名> # 测试 plan 命令 bun src/cli.ts status [变更名] # 测试 status 命令 -bun src/cli.ts help # 查看全局帮助 -bun src/cli.ts help init # 查看 init 命令帮助 -bun src/cli.ts version # 查看版本号 +bun src/cli.ts help # 查看全局帮助 +bun src/cli.ts help init # 查看 init 命令帮助 +bun src/cli.ts version # 查看版本号 +``` + +### Tier 3 LLM-as-Judge 环境变量 + +```bash +export RUNE_E2E_LLM_API_KEY="your-api-key" # 必填 +export RUNE_E2E_LLM_PROVIDER="openai" # 可选,默认 openai +export RUNE_E2E_LLM_MODEL="gpt-4o-mini" # 可选,默认 gpt-4o-mini +export RUNE_E2E_LLM_BASE_URL="https://..." # 可选,自定义 endpoint +bun run test:e2e:llm ``` ### 代码质量 @@ -117,18 +129,22 @@ CLI 通过子命令提供帮助和版本信息,不使用 `--help`/`--version` ## 测试策略 -### Level 1 — 纯单元/集成测试(当前) +### 单元/集成测试(`bun test`) -在临时目录执行完整流程,验证文件创建、目录结构、提示词输出。 +在临时目录执行完整流程,验证文件创建、目录结构、提示词输出。覆盖 `src/core/`、`src/cli/`、`src/adapters/`、`tests/integration/`。 -### Level 2 — 提示词快照测试(后续增强) +### Agent 端到端测试(`bun run test:e2e`) -对每个阶段捕获提示词输出,与预期快照对比。 +位于 `tests/agent/`,灰度盒测试互补现有白盒测试,三层架构: -### Level 3 — mock-agent 端到端(后续增强) +| Tier | 说明 | 触发 | +| -------------- | ---------------------------- | ------------------------------ | +| 1 命令级 mock | 每命令预设行为,CI 快速门禁 | `bun run test:e2e` | +| 2 场景级 mock | 行为重写,覆盖边界和错误恢复 | `bun run test:e2e` | +| 3 LLM-as-Judge | 调用 LLM API 验证提示词质量 | `bun run test:e2e:llm`(手动) | -编排完整闭环:rune 输出 → mock-agent 处理 → rune 继续下一阶段。 +运行策略: -### Level 4 — 真实 AI 工具集成(CI 可选) - -调用 LLM API 验证输出格式可被解析。 +- `bun test`(pre-commit 用):Tier 1 + 2 **不参与**,仅跑单元/集成 +- `bun run test:e2e`:Tier 1 + 2(< 5s) +- `bun run test:e2e:llm`:Tier 3(手动触发,需 `RUNE_E2E_LLM_API_KEY`) diff --git a/package.json b/package.json index f9aaee1..76d2b57 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,9 @@ "module": "src/cli.ts", "scripts": { "prepare": "husky", + "test": "bun test --path-ignore-patterns 'tests/agent/**'", + "test:e2e": "bun test tests/agent/", + "test:e2e:llm": "bun test tests/agent/e2e-llm-judge.test.ts --timeout 120000", "lint": "oxlint", "format": "oxfmt .", "format:check": "oxfmt --check .",