您好,登錄后才能下訂單哦!
本篇內容主要講解“Awaitility同步異步工具怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Awaitility同步異步工具怎么使用”吧!
Maven:
<dependency> <groupId>org.awaitility</groupId> <artifactId>awaitility</artifactId> <version>xxxx</version> <scope>test</scope> </dependency>
為了有效地使用Awaitility,建議從Awaitility框架中靜態地導入以下方法:
org.awaitility.Awaitility.*
在使用的時候需要搭配Java的時間相關的類以及Junit相關類:
java.time.Duration.*
java.util.concurrent.TimeUnit.*
org.junit.Assert.*
例子1:
await().until(newUserIsAdded());
等待直到執行newUserIsAdded()返回true. 這個是沒有返回值的。
例子2:
await().atMost(5, SECONDS).until(newUserWasAdded());
最多等待5秒,等待直到執行newUserIsAdded()返回true. 這個是沒有返回值的。
例子3:
await().until( userRepositorySize(), equalTo(1) );
等待直到執行userRepositorySize()返回方法對應的值. 這個是有返回值
在RocketMQ的test cases 中有一些使用了 Thread.sleep,接下來我們看看如何使用awaitility進行優化,減少測試用例的執行時間。以ControllerManagerTest測試用例為例子來解決,在代碼中可以看到有這樣的代碼:
上圖框出來的代碼主要的作用是什么呢?等待Broker的Master過期,但是過期的時間我們根據設置的心跳的過期時間來預估時間。所以這里填寫的是6秒當然你也可以填寫10秒或者更長。
解決之前的執行時間:
使用awaitility對代碼進行改造重構:
重構后的代碼,如上圖的紅線框出來部分。當然我這里還對其他的進行處理。
使用awaitility重構后的執行時間:
時間有明顯的下降。相比之前的下降了5秒左右。
到此,相信大家對“Awaitility同步異步工具怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。