Rust 如何在测试中运行并发任务?
我有以下片段:Rust 如何在测试中运行并发任务?,rust,async-await,Rust,Async Await,我有以下片段: fn main() { async_std::task::block_on(async { let handle_fast = async { for i in 1..=8 { println!("fast {}", i); async_std::task::sleep(std::time::Duration::from_millis(250)).await; }
fn main() {
async_std::task::block_on(async {
let handle_fast = async {
for i in 1..=8 {
println!("fast {}", i);
async_std::task::sleep(std::time::Duration::from_millis(250)).await;
}
()
};
let handle_slow = async {
for i in 1..=4 {
println!("slow {}", i);
async_std::task::sleep(std::time::Duration::from_millis(500)).await;
}
()
};
futures_util::join!(handle_fast, handle_slow)
});
}
#[cfg(test)]
mod tests {
#[test]
fn test() {
async_std::task::block_on(async {
let handle_fast = async {
for i in 1..=8 {
println!("fast {}", i);
async_std::task::sleep(std::time::Duration::from_millis(250)).await;
}
()
};
let handle_slow = async {
for i in 1..=4 {
println!("slow {}", i);
async_std::task::sleep(std::time::Duration::from_millis(500)).await;
}
()
};
futures_util::join!(handle_fast, handle_slow)
});
}
}
当我运行main方法时,它按预期工作。但是当从测试运行时,它不起作用,只是在执行结束时一次打印所有内容。
如何在测试中从main
复制行为?货物测试--nocapture
任务运行正常。只是测试运行者“吃掉”了所有的
打印输出,并在测试通过时将其隐藏。@Kornel谢谢。我正在运行IntelliJ的测试。通常当我使用println时!在测试中,它们总是打印,因为它们速度快,所以我没有注意到直到测试结束才打印。