Run Tests & Verify
该技能介绍如何在 cx CLI 中运行测试、lint 并验证代码改动。它只覆盖运行环节;如需编写新测试,请参考 add-command 技能。
快速参考
| 命令 | 作用 |
|---|---|
cargo test |
运行所有单元测试与集成测试 |
cargo test <name> |
运行名称包含指定子串的测试 |
cargo test -- --ignored |
运行集成测试(依赖文件系统,默认被跳过) |
cargo fmt --check |
检查格式(不做改动) |
cargo fmt |
自动修复格式 |
cargo clippy --locked -- -D warnings |
以警告即错误的方式进行 lint |
cargo build |
验证编译 |
完整 CI 检查
这是 CI 在每个 PR 上运行的完全相同序列。提交或创建 PR 之前请先运行:
cargo fmt --check && cargo clippy --locked -- -D warnings && cargo test --locked
--locked 标志确保遵循锁文件——这与 .github/workflows/test.yml 和 lint.yml 完全一致。CI 在 Ubuntu、macOS 和 Windows 上运行测试。
改动之后该运行什么
根据改动内容选择相应级别的验证:
- 任何
.rs文件 ——cargo test+cargo clippy --locked -- -D warnings - 仅格式 ——
cargo fmt --check(或用cargo fmt自动修复) Cargo.toml—— 完整 CI 检查(依赖变化会影响所有内容)- API 类型(
src/commands/<cmd>/api.rs) —— 先运行该命令的测试(cargo test alerts、cargo test dataprime),再运行完整测试套件 - 仅测试文件 ——
cargo test <relevant_test_name>
运行特定测试
与其运行整套测试,不如高效地定位目标测试:
cargo test alerts—— 所有名称含 “alerts” 的测试cargo test --test dataprime—— 仅tests/dataprime/集成测试二进制(input + output + query)cargo test --test dataprime input—— 仅该二进制的input子模块cargo test config::tests—— 仅config模块中的测试cargo test metrics::tests—— 仅指标格式化测试
解读失败
Clippy 警告 —— 通过 -D warnings 被视为错误。提交前应修复每个警告。常见的有:未使用变量、不必要的克隆、缺少错误处理。
格式失败 —— 运行 cargo fmt 自动修复。这类问题从不需要人工干预。
反序列化测试失败 —— 通常意味着结构体字段名与 JSON 键不匹配。检查响应类型上是否有 #[serde(rename_all = "camelCase")],以及 Vec 字段上是否有 #[serde(default)](API 有时会省略空数组)。
测试中的编译错误 —— 很可能由更改公共函数签名引起。检查 src/ 和 tests/ 目录中的调用方。
集成测试失败(--ignored) —— 这些依赖文件系统状态(~/.cx/ 配置目录)。如果本地环境未配置好,它们可能失败。在没有配置的 CI 环境中这是预期行为。