CentOS 下 Rust 测试框架选型
一 分层选型总览
二 核心框架与适用场景
| 测试类型 | 推荐框架 | 主要优势 | 典型场景 | 在 CentOS 的要点 |
|---|---|---|---|---|
| 单元测试/集成 | 标准库 test + assert/assert_eq! | 零成本、与语言集成、运行快 | 函数/模块正确性 | 直接用 cargo test |
| 属性测试 | proptest / quickcheck | 自动生成大量输入并缩小失败用例 | 解析、编解码、算法边界 | 作为 dev 依赖引入 |
| Mock/打桩 | mockall | 生成 trait mock,隔离外部依赖 | 数据库、外部服务 | 与 #[cfg(test)] 配合 |
| Web/API 单元/集成 | actix-web 等自带 test 模块 | 贴近真实运行时 | 路由、中间件、请求处理 | 配合 cargo test |
| E2E 前端/全栈 | Playwright / wasm-bindgen-test | 跨浏览器、自动等待;或 Rust/WASM 原生 | 页面交互、跨浏览器回归 | Playwright 需 Node.js/npm;wasm 需 wasm32 目标 |
| 性能基准 | Criterion / bencher | 统计回归、HTML 报告;或 Nightly 轻量基准 | 热点路径、优化回归 | 推荐 Stable 用 Criterion |
| 模糊测试 | cargo-fuzz / OSS-Fuzz | 长期分布式 fuzz、本地快速迭代 | 解析器、协议、边界输入 | 开源项目可同时接入两者 |
| HTTP 压测 | wrk / hey / wrk2 | 高并发、命令行易集成 | 服务吞吐、稳定性 | 直接安装二进制使用 |
| 上述框架在 Linux/CentOS 上均可落地,选型以“层级 + 场景”为主,而非发行版差异。 |
三 快速决策建议
四 CentOS 落地要点
npx playwright install 拉取浏览器;如需 wasm 测试,添加目标 rustup target add wasm32-unknown-unknown。cargo test;基准测试用 cargo bench(Criterion 会生成 HTML 报告);E2E 在 CI 中启动服务后执行测试脚本;压测用系统包管理器安装 wrk/hey/wrk2 后直接运行命令。cargo fuzz init 与 cargo fuzz run <target>;开源项目可按 OSS-Fuzz 项目结构添加 fuzz 目标并接入其持续 fuzz 流程。