SuperAPI AI 工具集

run-tests

测试与质量

查看项目

更新于 10-16 22:15

技能介绍

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 环境中这是预期行为。