chore: e2e 测试与单元测试分离,通过脚本区分
This commit is contained in:
@@ -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`)
|
||||||
|
|||||||
@@ -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 .",
|
||||||
|
|||||||
Reference in New Issue
Block a user