我已经实现了以下方法和单元测试:
use std::fs::File;
use std::path::Path;
use std::io::prelude::*;
fn read_file(path: &Path) {
let mut file = File::open(path).unwrap();
let mut contents = String::new();
file.read_to_string(&mut contents).unwrap();
println!("{contents}");
}
#[test]
fn test_read_file() {
let path = &Path::new("/etc/hosts");
println!("{path:?}");
read_file(path);
}
我这样运行单元测试:
rustc --test app.rs; ./app
我也可以运行这个
cargo test
我收到一条消息,说测试通过了,但是println!
永远不会显示在屏幕上。为什么不?
发生这种情况是因为 Rust 测试程序隐藏了成功测试的标准输出,以便测试输出整洁。您可以通过传递来禁用此行为--nocapture
测试二进制文件的选项或cargo test
(但是,在这种情况下after --
- 见下文):
#[test]
fn test() {
println!("Hidden output")
}
调用测试:
% rustc --test main.rs; ./main
running 1 test
test test ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
% ./main --nocapture
running 1 test
Hidden output
test test ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
% cargo test -- --nocapture
running 1 test
Hidden output
test test ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
但是,如果测试失败,无论此选项是否存在,都将打印其标准输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)