在单元测试中,能否用await替代sleep进行等待?

2026-05-26 02:460阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计246个文字,预计阅读时间需要1分钟。

在单元测试中,能否用await替代sleep进行等待?

在单元测试时,Thread.sleep可能会因某些原因导致线程回收或关闭,因此可以使用await代替sleep暂停执行。简单来说,sleep是对线程的暂停,而await是对某物的等待。

Thread.sleep在单元测试时可能会因为某些原因导致线程回收或关闭,所以在单元测试中若需要暂停可以用await代替sleep。

简单来说可以理解成sleep针对的是一个线程的暂停,而await是针对一个对象的暂停。或许我们换一种说法,我们将线程理解成一个通道(pipe),每个对象在管道里面将被顺序执行。如果用sleep则是整个管道都静止了,里面所有的对象都会被阻塞。而await只是说我这个对象不动了,而我的管道还在运行。

可以理解么?

再举个现实生活上的例子。我们在开车,每辆车就是一个对象,现在排队过隧道。如果使用sleep则隧道口被拦住不给进了。而如果是await,则只是其中一辆车死火了而已。

在单元测试中,能否用await替代sleep进行等待?

例子:

await().atMost(2,Duration.SECONDS).until(didTheThing());

上面的代码中didTheThing()是可执行的多线程方法。

本文共计246个文字,预计阅读时间需要1分钟。

在单元测试中,能否用await替代sleep进行等待?

在单元测试时,Thread.sleep可能会因某些原因导致线程回收或关闭,因此可以使用await代替sleep暂停执行。简单来说,sleep是对线程的暂停,而await是对某物的等待。

Thread.sleep在单元测试时可能会因为某些原因导致线程回收或关闭,所以在单元测试中若需要暂停可以用await代替sleep。

简单来说可以理解成sleep针对的是一个线程的暂停,而await是针对一个对象的暂停。或许我们换一种说法,我们将线程理解成一个通道(pipe),每个对象在管道里面将被顺序执行。如果用sleep则是整个管道都静止了,里面所有的对象都会被阻塞。而await只是说我这个对象不动了,而我的管道还在运行。

可以理解么?

再举个现实生活上的例子。我们在开车,每辆车就是一个对象,现在排队过隧道。如果使用sleep则隧道口被拦住不给进了。而如果是await,则只是其中一辆车死火了而已。

在单元测试中,能否用await替代sleep进行等待?

例子:

await().atMost(2,Duration.SECONDS).until(didTheThing());

上面的代码中didTheThing()是可执行的多线程方法。