cargo test会在测试模式下编译代码,并运行生成的测试二进制文件。
通过命令行参数,我们可以:
- 改变
cargo test的默认行为。 - 为生成的测试二进制文件指定参数。
在传递给cargo test的参数后使用--分隔符,后面的就是传递给测试二进制文件的参数。
例如:
cargo test --help:传递给cargo test。cargo test -- --help:传递给测试二进制文件。
显示函数输出
默认情况下,Rust的测试库会在测试通过时捕获所有被打印至标准输出的消息。也就是说,测试如果通过,那么println!等打印的信息就不会显示在标准输出上。只有测试不通过才会显示。
如果希望测试通过也能打印值,可以传入--nocapture标记,如
cargo test -- --nocapture只运行部分特定名称的测试
向cargo test传递测试名称来指定需要运行的测试。
创建三个测试:
fn add_two(a: i32) -> i32 {
a + 2
}
#[cfg(test)]
mod tests {
#[test]
fn add_two_and_two() {
assert_eq!(4, add_two(2));
}
#[test]
fn add_three_and_two() {
assert_eq!(5, add_two(3));
}
#[test]
fn one_hundred() {
assert_eq!(102, add_two(100));
}
}只运行one_hundred测试函数,那么cargo test one_hundred,运行以add开头的测试函数cargo test add。
也可以指定模块名来运行特定模块内的所有测试。
显式忽略某些测试
对于想要剔除的测试,可以在#[test]下方添加#[ignore]。例如
#[test]
#[ignore]
fn expensive_test() {
}在默认cargo test的时候就会忽略掉这些测试,只有显式指定--ignore才会单独运行这些测试。cargo test -- --ignore。
对于测试代价高的测试我们都可以使用#[ignore]进行标注。
tags: 测试