单测时,可以用来等待异步任务完成

  在编写自动化测试用例过程中,往往会遇见被测代码有异步或者队列处理的中间过程;如果需要校验这部分结果,必须等待异步操作结束或队列消费完,而这个中间等待的时间是不确定的,常常是根据经验值设定,通过 Thread.sleep(经验值) ,而这个时间通常会设置成最长的那次时间,但是可能99%次这个异步操作都低于这个最长的时间,这就造成了每次执行这个测试用例都花费了异步任务最长的那次时间。

  现介绍一款开源工具awaitility: https://github.com/awaitility/awaitility ,该工具提供轮询的方式,判断操作是否完成,以最短的时间获取异步任务结果。

In order to use Awaitility effectively it's recommended to statically import the following methods from the Awaitility framework:

  • org.awaitility.Awaitility.*

It may also be useful to import these methods:

  • org.awaitility.Duration.*
  • java.util.concurrent.TimeUnit.*
  • org.hamcrest.Matchers.*
  • org.junit.Assert.*

If you're using Java 8 you can also use lambda expressions in your conditions:

await().atMost(5, SECONDS).until(() -> userRepository.size() == 1);

Or method references:

await().atMost(5, SECONDS).until(userRepository::isNotEmpty);

Or a combination of method references and Hamcrest matchers:

await().atMost(5, SECONDS).until(userRepository::size, is(1));

参考:

https://github.com/awaitility/awaitility/wiki/Usage

https://blog.csdn.net/hj7jay/article/details/55094639

最新文章

  1. Mysql查询——学习阶段
  2. 在Python命令行和VIM中自动补全
  3. BZOJ 1088 扫雷Mine
  4. [Papers]MHD, $\p_3\pi$, Lebesgue space [Zhang-Li-Yu, JMAA, 2013]
  5. [翻译]创建ASP.NET WebApi RESTful 服务(9)
  6. SVN服务器从Windows迁移到Linux
  7. A Tour of Go Struct Literals
  8. ccmenu里的位置
  9. Hadoop的基本命令【转载】
  10. 成都UBER优步司机第六组奖励政策
  11. WebBrowser编程简述
  12. linux时间校准设置,解决与本地时间不一致问题
  13. Vim常用操作-快速删除括号中内容。
  14. asp.net上传文件限制解决方案
  15. JVM学习资料
  16. RabbitMQ队列的使用
  17. python爬取post请求Reque Payload的json数据
  18. 谈谈我对 js原型链的理解
  19. 【Vuex】mapGetters 辅助函数
  20. [视频]K8飞刀 SQL注入点脱库演示教程

热门文章

  1. mysql中的存储引擎
  2. Githun&HEXO建站小记
  3. navicat for mysql 在win7下设置定时计划之导出数据处理
  4. 求1+2+...+n 【微软面试100题 第十二题】
  5. 如何解决border的重叠问题
  6. 紫书第三章训练1 E - DNA Consensus String
  7. oracle查询包含大小写的数据
  8. 【转】PhpStorm 提交代码到远程GitHub仓库
  9. HashSet源码分析 jdk1.6
  10. BZOJ1499 [NOI2005]瑰丽华尔兹 【单调队列优化dp】