温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Awaitility同步异步工具怎么使用

发布时间:2022-08-26 10:30:33 来源:亿速云 阅读:104 作者:iii 栏目:开发技术

本篇内容主要讲解“Awaitility同步异步工具怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Awaitility同步异步工具怎么使用”吧!

    1. awaitility入门

    Maven:

    <dependency>
          <groupId>org.awaitility</groupId>
          <artifactId>awaitility</artifactId>
          <version>xxxx</version>
          <scope>test</scope>
    </dependency>

    1.1 静态导入

    为了有效地使用Awaitility,建议从Awaitility框架中静态地导入以下方法:

    org.awaitility.Awaitility.*

    在使用的时候需要搭配Java的时间相关的类以及Junit相关类:

    java.time.Duration.*

    java.util.concurrent.TimeUnit.*

    org.junit.Assert.*

    1.2 简单例子

    例子1:

    await().until(newUserIsAdded());

    等待直到执行newUserIsAdded()返回true. 这个是没有返回值的。

    例子2:

    await().atMost(5, SECONDS).until(newUserWasAdded());

    最多等待5秒,等待直到执行newUserIsAdded()返回true. 这个是没有返回值的。

    例子3:

    await().until( userRepositorySize(), equalTo(1) );

    等待直到执行userRepositorySize()返回方法对应的值. 这个是有返回值

    2. awaitility在RocketMQ中的实战

    在RocketMQ的test cases 中有一些使用了 Thread.sleep,接下来我们看看如何使用awaitility进行优化,减少测试用例的执行时间。以ControllerManagerTest测试用例为例子来解决,在代码中可以看到有这样的代码:

    Awaitility同步异步工具怎么使用

    上图框出来的代码主要的作用是什么呢?等待Broker的Master过期,但是过期的时间我们根据设置的心跳的过期时间来预估时间。所以这里填写的是6秒当然你也可以填写10秒或者更长。

    解决之前的执行时间:

    Awaitility同步异步工具怎么使用

    使用awaitility对代码进行改造重构:

    Awaitility同步异步工具怎么使用

    重构后的代码,如上图的红线框出来部分。当然我这里还对其他的进行处理。

    使用awaitility重构后的执行时间:

    Awaitility同步异步工具怎么使用

    时间有明显的下降。相比之前的下降了5秒左右。

    到此,相信大家对“Awaitility同步异步工具怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI