chore: e2e 测试与单元测试分离,通过脚本区分

This commit is contained in:
2026-06-09 16:23:32 +08:00
parent 073b9c1e47
commit faefefda39
2 changed files with 33 additions and 14 deletions

View File

@@ -37,7 +37,9 @@ tests/ # 测试目录(镜像 src 结构)
## 开发命令 ## 开发命令
```bash ```bash
bun test # 运行全部测试 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 test tests/core/ # 运行指定目录测试
bun src/cli.ts init opencode # 测试 init 命令 bun src/cli.ts init opencode # 测试 init 命令
bun src/cli.ts plan <变更名> <文档名> # 测试 plan 命令 bun src/cli.ts plan <变更名> <文档名> # 测试 plan 命令
@@ -47,6 +49,16 @@ bun src/cli.ts help init # 查看 init 命令帮助
bun src/cli.ts version # 查看版本号 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
```
### 代码质量 ### 代码质量
项目使用 oxlint 进行静态分析oxfmt 进行代码格式化,提交时通过 husky + lint-staged 自动检查。 项目使用 oxlint 进行静态分析oxfmt 进行代码格式化,提交时通过 husky + lint-staged 自动检查。
@@ -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 可选) - `bun test`pre-commit 用Tier 1 + 2 **不参与**,仅跑单元/集成
- `bun run test:e2e`Tier 1 + 2< 5s
调用 LLM API 验证输出格式可被解析。 - `bun run test:e2e:llm`Tier 3手动触发`RUNE_E2E_LLM_API_KEY`

View File

@@ -9,6 +9,9 @@
"module": "src/cli.ts", "module": "src/cli.ts",
"scripts": { "scripts": {
"prepare": "husky", "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", "lint": "oxlint",
"format": "oxfmt .", "format": "oxfmt .",
"format:check": "oxfmt --check .", "format:check": "oxfmt --check .",