mcpField
R
rust-testing

rust-testing

github.com/pproenca测试与质量22093 次安装11 周前更新
代码仓库

关于 rust-testing

这项技能整理了 codex-rs 贡献者采用的 Rust 测试规范,涵盖模块、集成、事件和快照测试,并提供模拟、确定性行为及测试基础设施的实践方法。

主要功能

  1. 01组织测试文件与断言
  2. 02模拟 API 和 SSE 交互
  3. 03构建类型化且可复用的测试数据
  4. 04通过谓词匹配测试事件
  5. 05保持测试结果确定
  6. 06用快照覆盖 TUI 渲染

适用场景

  1. 01编写 Rust 模块测试
  2. 02为缺陷修复添加回归测试
  3. 03用 SSE 模拟测试 Responses API 流程
  4. 04为 TUI 改动编写快照测试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pproenca/dot-skills --skill rust-testing

安装后在 Claude Code 中输入/rust-testing确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
arch-avoid-env-mutation.md
arch-cargo-bin-resolver.md
arch-regression-per-pr.md
arch-sibling-test-files.md
arch-tempdir-isolation.md
arch-test-module-imports.md
assert-descriptive-names.md
assert-eq-over-bool.md
assert-pretty-assertions.md
assert-snapshot-ui.md
assert-whole-object.md
data-btreemap-tests.md
data-builder-pattern.md
data-minimal-fixtures.md
data-realistic-names.md
data-struct-construction.md
det-deterministic-ids.md
det-fixed-ordering.md
det-no-env-dependency.md
det-no-timing-assertions.md
det-sandbox-env-skip.md
event-function-call-output.md
event-request-helpers.md
event-structured-assertions.md
event-submit-op.md
event-wait-for-event.md

详细介绍

Codex-RS 贡献者 Rust 测试最佳实践

本指南全面介绍如何按照顶尖 codex-rs 贡献者确立的标准编写高质量 Rust 测试。本技能汇集了测试架构、断言、模拟服务、测试数据、事件驱动测试、确定性、快照测试和集成测试基础设施方面的模式。

适用场景

  • 为 codex-rs 中的任何 Rust 模块编写新测试
  • 为 Bug 修复添加回归测试(每个 PR 编写 3-6 个测试)
  • 创建通过 SSE 模拟与 Responses API 交互的集成测试
  • 修改需要快照覆盖的 TUI 渲染代码
  • 审查测试代码是否符合代码库约定

按优先级划分的规则类别

优先级类别前缀规则重点
严重测试架构arch-6文件组织、导入、隔离
严重断言assert-5pretty_assertions、整体对象比较
高模拟服务mock-6wiremock、SSE 构建器、ResponseMock
高测试数据data-5构建器、类型化构造、BTreeMap
中高事件测试event-5提交/等待周期、谓词匹配
中确定性det-5稳定 ID、环境隔离
中快照测试snap-4Insta 工作流、缓冲区渲染
中低集成测试integ-4core_test_support、Bazel 兼容性

快速参考

  • 测试文件位置: 通过 #[path = "feature_tests.rs"] 放在同级 _tests.rs 文件中
  • 断言: 始终使用 use pretty_assertions::assert_eq;
  • 对象比较: 对整个结构体使用 assert_eq!(actual, expected)
  • SSE 模拟: responses::mount_sse_once + responses::sse(vec![ev_*(...)])
  • 等待事件: wait_for_event(codex, |ev| predicate)
  • 快照测试: insta::assert_snapshot!(terminal.backend())
  • 确定性: 使用 BTreeMap 而非 HashMap,并使用 set_deterministic_process_ids
  • 二进制文件解析: codex_utils_cargo_bin::cargo_bin("name")
  • Fixture 路径: codex_utils_cargo_bin::find_resource!("path")
  • 沙箱处理: skip_if_sandbox!() / skip_if_no_network!()

使用方法

  1. 从严重级别规则(arch、assert)开始——这些规则适用于每个测试
  2. 编写带 API 模拟的集成测试时,应用高优先级规则(mock、data)
  3. 测试 Agent 协议时,应用中高优先级规则(event)
  4. 测试涉及进程 ID 或 UI 渲染时,应用中优先级规则(det、snap)
  5. 为跨 crate 和构建系统兼容性应用中低优先级规则(integ)

参考文件

文件用途
references/_sections.md章节定义、排序和影响级别
references/arch-*.md测试架构规则(6 个文件)
references/assert-*.md断言规则(5 个文件)
references/mock-*.md模拟服务规则(6 个文件)
references/data-*.md测试数据规则(5 个文件)
references/event-*.md事件测试规则(5 个文件)
references/det-*.md确定性规则(5 个文件)
references/snap-*.md快照测试规则(4 个文件)
references/integ-*.md集成测试规则(4 个文件)
assets/templates/_template.md规则文件模板
metadata.json技能元数据和版本

评论

支持 Markdown