在CentOS上进行Rust测试前,需先安装Rust环境。推荐使用rustup(Rust官方工具链管理器)安装:
# 下载并运行rustup安装脚本
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 安装完成后,将Rust添加到PATH环境变量(根据提示执行或手动运行)
source $HOME/.cargo/env
# 验证安装
rustc --version # 查看Rust编译器版本
cargo --version # 查看Cargo(Rust包管理器)版本
确保系统已安装基础开发工具(如gcc、make),可通过以下命令安装:
sudo yum groupinstall "Development Tools"
Rust支持单元测试(测试单个函数/模块)和集成测试(测试多个模块的交互),测试代码需放在#[cfg(test)]模块中,并用#[test]标记测试函数。
单元测试示例(库项目):
若项目为库(cargo new --lib my_project),在src/lib.rs中编写被测函数及测试:
// src/lib.rs
pub fn add(a: i32, b: i32) -> i32 { // 被测函数
a + b
}
#[cfg(test)] // 仅在测试时编译此模块
mod tests {
use super::*; // 引入父模块的函数
#[test] // 标记为测试函数
fn test_add_positive() {
assert_eq!(add(2, 3), 5); // 断言相等
}
#[test]
fn test_add_negative() {
assert_eq!(add(-1, 1), 0);
}
}
集成测试示例:
集成测试需放在项目根目录下的tests文件夹中(如tests/integration_test.rs),测试多个模块的交互:
// tests/integration_test.rs
use my_project::add; // 导入库中的函数
#[test]
fn test_integration() {
assert_eq!(add(10, -5), 5);
}
使用cargo test命令编译并运行所有测试(单元测试+集成测试):
# 进入项目目录
cd my_project
# 运行所有测试
cargo test
常用选项:
--verbose或-v,查看每个测试的执行细节(如打印语句);-k指定测试名称的关键字(如cargo test -k add仅运行名称包含“add”的测试);-- --nocapture,显示测试中的println!等输出(默认会被Cargo捕获);cargo test --test <test_name>运行特定测试二进制。测试覆盖率用于评估测试用例覆盖的代码比例,可使用cargo-tarpaulin工具(需安装):
# 安装cargo-tarpaulin
cargo install cargo-tarpaulin
# 生成覆盖率报告(默认输出终端)
cargo tarpaulin
# 生成HTML格式报告(需安装`grcov`)
cargo tarpaulin --out Html
报告会显示哪些代码行被测试覆盖、哪些未覆盖,帮助定位测试盲区。
tests目录(集成测试);#[test]函数不能有参数,也不能返回Result或impl Future(除非使用异步测试框架);cargo test会显示失败的具体原因(如断言不成立、panic),便于快速定位问题。