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时!在测试中,它们总是打印,因为它们速度快,所以我没有注意到直到测试结束才打印。