测试的目的:
- 发现问题
- 保证项目长期的健壮性和可维护性
- 单元测试是重构的保证,编写无状态函数
rust的单元测试
- 内置测试框架:属性和宏
- 断言宏assert!, assert_eq!,assert_ne!,debug_assert!
运行测试
代码语言:rust复制#[test]
fn basic_test() {
assert!(true);
}
//RUST_TEST_THREADS = 1
//rustc --test xxx.rs
- 隔离测试单独构建测试的文件夹和src同级
- cargo test
- 故障测试 #should_panic
- 忽略测试 #ignore
集成测试
- 和代码同时创建目录tests
rust的性能测试
使用依赖的包
代码语言:text复制[dev-dependencies]
criterion = "0.3.5"
代码语言:rust复制//src/lib/sum.rs
pub fn sum(a :i8, b:i8) -> i8 {
a b
}
//bench_x/benches/bench_x.rs
#[macro_use]
extern crate criterion;
extern crate bench_x;
use bench_x::{sum};
use criterion::Criterion;
fn sum_benchmark(c: &mut Criterion) {
c.bench_function("sum 8", |b| b.iter(|| sum(0001,12)));
}
criterion_group!(fib_bench, sum_benchmark);
criterion_main!(fib_bench);
rust的文档自动生成
文档
- 原始级//或者/* */
- 模块级 //! /*!
- 生成文档cargo doc --no-deps
文档列表