Agent skill · software engineering · affaan-m

rust-testing

Rust测试模式,包括单元测试、集成测试、异步测试、基于属性的测试、模拟和覆盖率。遵循TDD方法学。

Why this skill is useful

Provides domain-specific knowledge on Rust testing methodologies, including TDD workflows and specific testing patterns that the AI wouldn't reliably generate on its own.

What it needs

Requires cargo installed locally. About 5k tokens when loaded. Last updated 2026-08-06. 238,342 stars on the source repository.

What this skill does

Rust 测试模式 遵循 TDD 方法论编写可靠、可维护测试的全面 Rust 测试模式。 何时使用 编写新的 Rust 函数、方法或特征 为现有代码添加测试覆盖率 为性能关键代码创建基准测试 为输入验证实现基于属性的测试 在 Rust 项目中遵循 TDD 工作流 工作原理 1. 识别目标代码 — 找到要测试的函数、特征或模块 2. 编写测试 — 在 #[cfg(test)] 模块中使用 #[test],使用 rstest 进行参数化测试,或使用 proptest 进行基于属性的测试 3. 模拟依赖项 — 使用 mockall 来隔离被测单元 4. 运行测试 (RED) — 验证测试是否按预期失败 5. 实现 (GREEN) — 编写最少代码以通过测试 6. 重构 — 改进代码同时保持测试通过 7. 检查覆盖率 — 使用 cargo-llvm-cov,目标 80% 以上 Rust 的 TDD 工作流 RED-GREEN-REFACTOR 循环 Rust 中的分步 TDD 单元测试 模块级测试组织 断言宏 错误与 Panic 测试 测试 Result 返回值 测试 Panic 集成测试 文件结构 编写集成测试 异步测试 使用 Tokio 测试组织模式 使用 rstest 进行参数化测试 测试辅助函数 使用 proptest 进行基于属性的测试 基本属性测试 自定义策略 使用 mockall 进行模拟 基于特征的模拟 文档测试 可执行的文档 /// use mycrate::add; /// /// asserteq!(add(2, 3), 5); /// asserteq!(add(-1, 1), 0); /// norun /// use mycrate::parseconfig; /// /// let config = parseconfig(r#"port = 8080"#).unwrap(); /// asserteq!(config.port, 8080); /// norun /// use mycrate::parseconfig; /// /// assert!(parseconfig("}{invalid").iserr()); /// 使用 Criterion 进行基准测试 测试覆盖率 运行覆盖率 覆盖率目标 代码类型 目标 ----------- -------- 关键业务逻辑 100% 公共 API 90%+ 通用代码 80%+ 生成的 / FFI 绑定 排除 测试命令 最佳实践 应该做: 先写测试 (TDD) 使用 #[cfg(test)] 模块进行单元测试 测试行为,而非实现 使用描述性测试名称来解释场景 为了更好的错误信息,优先使用 asserteq! 而非 assert! 在返回 Result 的测试中使用 ? 以获得更清晰的错误输出 保持测试独立 — 没有共享的可变状态 不应该做: 在可以测试 Result::iserr() 时使用 #[shouldpanic] 模拟所有内容 — 在可行时优先考虑集成测试 忽略不稳定的测试 — 修复或隔离它们 在测试中使用 sleep() — 使用通道、屏障或 tokio::time::pause()` 跳过错误路径测试 CI 集成 记住:测试就是文档。它们展示了你的代码应如何使用。清晰编写并保持更新。

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills affaan-m/rust-testing--656924

View the source on GitHub

Browse the @skills marketplace