接口自动化-使用 Awaitility 测试异步代码

本文介绍了在异步任务处理中,如订单导出和批处理等场景下,如何进行自动化集成测试。传统的Thread.sleep方法存在不确定性,而Awaitility提供了一种更精确的轮询方式来判断异步操作是否完成。文章通过一个订单批量受理的例子,展示了Awaitility的使用步骤,包括添加依赖、引入相关Class以及编写测试脚本,强调了其在等待异步任务结果时的灵活性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于那些实时性要求不高,但却计算密集或者需要处理大数据量的耗时较长的任务,或是有较慢 I/O 的任务,选择异步化是一个不错的选择。在系统层面,像引入消息中间件来解耦系统,将耗时长的任务放在中间件后异步执行。在方法层面,像把耗时较长的任务放到其他线程中去异步执行。

异步任务的两种类型:

(1)列表异步任务执行后对任务发起方或调用方有感知,比如发出一个事件或通知
(2)列表异步任务执行后对任务发起方或调用方没有感知,只是改变了系统中的某些状态

招商店铺中目前存在的都是第2种情况,在业务上的异步主要分以下两类:
1.订单导出类的功能:导出的订单数据较多,使用异步进行交互
2.提交到batch批处理进行处理

像这样异步场景怎么进行自动化集成呢?

之前也有做法就是通过Thread.sleep(经验值)来进行等待异步任务处理,但中间等待的时间是不确定的。

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

以下用订单批量受理场景进行举例:

点击【批量受理】后,提交任务到batch落地任务流水。
具体的受理动作由batch批处理中心进行受理。

awaitility 使用步骤:
(1)maven工程在pom.xml添加awaitility依赖:

<dependency>
      <groupId>org.awaitility</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠然的笔记本

非常感谢您的鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值