# test

## 职责

围绕测试的命令。运行本地测试套件，解析输出，生成摘要报告。

## 动机

当前测试分散在多个框架和目录中：Rust 用 `cargo test`，Python 用 `pytest`，集成测试在 `integrated_tests/`。开发者需要分别执行、分别阅读输出、手动汇总结果。

`test` 提供一个统一的入口，把碎片化的测试运行统一为一次命令、一份报告。

## 设计

本地运行，不依赖网络。扫描项目中的测试目录，根据语言自动选择测试框架。

### 扫描的测试目标

| 目标 | 框架 | 路径 |
|------|------|------|
| Rust 单元测试 | `cargo test` | `src/` |
| Rust 集成测试 | `cargo test --test *` | `tests/` |
| Python 测试 | `pytest` | `tests/python/` |
| 集成测试 | `pytest` | `integrated_tests/` |

### 输出

- 总测试数 + 通过/失败/跳过统计
- 失败用例列表（文件 + 行号 + 错误信息）
- 运行耗时
- 变更对比（操作前后测试结果的变化）

### 过滤

| 参数 | 说明 |
|------|------|
| `--rust` | 仅运行 Rust 测试 |
| `--python` | 仅运行 Python 测试 |
| `--integration` | 仅运行集成测试 |
| `--name <pattern>` | 按测试名称过滤 |
| `--path <path>` | 按文件路径过滤 |

### 风格

与 `release` 命令组一致：Rust 实现、无副作用、原子操作。
