Rust 怎么写测试
先跑起来
不说什么具体的知识,我们先一步步的,来写个最简单的测试,并且让他啊跑起来,看看
rust 下的测试是什么样子的: 1. 创建个 lib
工程:cargo new simplest-test --lib
2. 在
src/lib.rs
里面,rust 已经自动帮我们写下了如下代码:
1
2
3
4
5
6
7
mod test {
fn it_works() {
assert_eq!(2 + 2, 4);
}
}cargo test
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Compiling simplest-test v0.1.0 (/User/xxx/simplest-test)
Finished dev [unoptimized + debuginfo] target(s) in 5.91s
Running target/debug/deps/simplest_test-c430fbaec5f55b85
running 1 test
test tests::it_works ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Doc-tests simplest-test
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
经过上述三步,我们已经创建了一个最简单的测试工程,并且运行了自带的测试。
在代码层面,测试本身无需多说,结构上我们看到,与业务代码不同,测试在
module 上增加了 attribute: #[cfg(test)]
,在测试方法上增加了
attribute: #[test]
。 -
#[cfg(test)]
:配置编译条件,只有在 test
模式下,被标记的代码块才会被编译(换句话说,它确保 release
中不包含测试代码) -
#[test]
:被标记的方法将被视为测试来执行
在 output 中,还包含了两部分“running x test”,第一部分是我们已有的测试,第二部分为文档测试,本文暂不涉及。