【发布时间】:2019-04-28 02:09:25
【问题描述】:
如果我使用cargo test 执行以下测试用例,one_thread_test 的输出将被抑制,如文档中所述。
但是multi_thread_test 的输出将出现在标准输出上。是否可以匹配单线程和多线程测试用例的行为?
#[test]
fn one_thread_test() {
println!("A");
println!("B");
}
#[test]
fn multi_thread_test() {
use std::thread;
let mut threads = vec![];
for _ in 0..100 {
let t = thread::spawn(move || {
println!("from thread");
});
threads.push(t);
}
for thread in threads {
thread.join().unwrap();
}
}
【问题讨论】:
-
@PeterHall 问题是
cargo在多线程测试用例中没有像上面的链接那样隐藏标准输出。 -
哦,我明白了。您可以通过实现自己的
print来解决它,它写入共享缓冲区,并且只从主线程中的缓冲区打印。不过可能过于复杂..
标签: unit-testing debugging rust rust-cargo