1. 单元测试
在 Rust 中,通常将单元测试放在与被测试的代码相同的文件中,并使用 #[cfg(test)] 属性标记测试模块。测试函数使用 #[test] 属性进行标记。例如:
// src/lib.rs 或者 src/main.rs
#[cfg(test)]
mod tests {
#[test]
fn test_addition() {
assert_eq!(2 + 2, 4);
}
#[test]
fn test_subtraction() {
assert_eq!(4 - 2, 2);
}
}
运行测试的命令是:
cargo test
2. 集成测试
集成测试是将测试放在 tests 目录下的独立文件中,这允许你测试整个 crate 的不同部分。例如:
// tests/integration_test.rs
#[test]
fn test_multiplication() {
assert_eq!(3 * 4, 12);
}
运行集成测试的命令是:
cargo test --test integration_test
3. 预期失败的测试
你可以使用 should_panic 属性来标记一个预期会失败的测试。例如:
#[test]
#[should_panic]
fn test_division_by_zero() {
let _result = 5 / 0;
}
4. 性能测试
Rust 允许编写性能测试以测量代码的执行时间。使用 #[bench] 属性进行标记。例如:
// 使用 extern crate test;
// tests/performance_test.rs
use test::Bencher;
#[bench]
fn bench_addition(b: &mut Bencher) {
b.iter(|| {
let result = 2 + 2;
assert_eq!(result, 4);
});
}
运行性能测试的命令是:
cargo bench
5. 配置测试
你可以通过修改 Cargo.toml 文件中的 [profile.test] 部分来配置测试的行为,例如:
[profile.test]
panic = 'abort' # 当测试 panic 时立即终止
以上是 Rust 中基本测试的一些示例和用法。测试是确保代码质量和可维护性的关键组成部分,因此在 Rust 中编写良好的测试是一个良好的实践。
转载请注明出处:http://www.zyzy.cn/article/detail/6774/Rust