Rust测试与基准测试完全指南
3 阅读
预计 3 分钟
Rust内置了强大的测试框架。本文介绍单元测试、集成测试和基准测试。
## 单元测试
```rust
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_add() {
assert_eq!(add(2, 3), 5);
}
#[test]
#[should_panic(expected = "overflow")]
fn test_panic() {
panic!("overflow");
}
#[test]
fn test_result() -> Result<(), String> {
if 2 + 2 == 4 {
Ok(())
} else {
Err(String::from("wrong"))
}
}
}
```
## 集成测试
```rust
// tests/integration_test.rs
use my_crate;
#[test]
fn it_works() {
assert!(my_crate::process().is_ok());
}
```
## 文档测试
```rust
/// Adds two numbers.
///
/// # Examples
///
/// ```
/// use my_crate::add;
/// assert_eq!(add(2, 3), 5);
/// ```
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
```
## 基准测试
```rust
use criterion::{black_box, criterion_group, criterion_main, Criterion};
fn fibonacci(n: u64) -> u64 {
match n {
0 => 1,
1 => 1,
n => fibonacci(n-1) + fibonacci(n-2),
}
}
fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20))));
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);
```
完善的测试是Rust项目质量的保障。
0 条评论 欢迎参与讨论