首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在测试中运行并发任务?

如何在测试中运行并发任务?
EN

Stack Overflow用户
提问于 2020-04-15 00:54:55
回答 1查看 211关注 0票数 2

我有以下片段:

代码语言:javascript
复制
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的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-15 01:01:08

代码语言:javascript
复制
cargo test -- --nocapture

任务进行得很好。只是测试运行程序“吃掉”了所有的print输出,并在测试通过时隐藏它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61219618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档