TIP:java
這部分相應的代碼在step-2文件夾中(https://github.com/vert-x3/vertx-guide-for-java-devs)git
在這以前,咱們發佈咱們的wiki應用沒有測試,這可不是一個好的實踐,如今咱們看看如何編寫測試Vert.x的代碼。github
vertx-unit模塊提供了工具集測試異步操做,你能夠選擇其中一種測試框架好比JUnit數據庫
使用JUnit,我麼須要加入下面的依賴:微信
使用JUnit測試的時候須要加入VertxUnitRunner註解來使用vertx-unit特性:框架
使用這一個runner,JUnit 測試方法的生命週期中接受一個TestContext,這個對象提供訪問基礎assertions,store data和async-oriented helpers(咱們將在本章說起)。異步
爲了說明這點,讓咱們考慮一個異步的狀況下,咱們要檢查一個定時器任務被調用一次,這一週期中的任務已經調用了3次。由於代碼執行是異步的,測試完成前測試方法已經存在,因此在測試經過或者失敗須要經過異步的結果:async
1.TestContext是runner提供的一個參數。ide
2.由於咱們用單元測試,因此須要一個Vert.x context。工具
3.TestContext assertion 一個基本的例子。
4.Async對象用來獲取異步的成功或者失敗。
5.Async使用countdown鎖,當被調用三次後執行。
6.當timer fires 完成。
7.每一個週期任務在觸發一個倒計時,當全部Async完成測試經過。
8.這裏有一個默認的超時時間,能夠經過@Test註解重寫。
測試數據庫操做
數據庫service很適合用來寫測試用例。
咱們先部署database verticle,咱們配置JDBC鏈接內存數據庫HSQLDB ,成功後咱們會拿咱們的測試用例服務代理。由於這些操做交織一塊兒,咱們利用JUnit的before / after生命週期的方法:
1.咱們將重寫verticle的配置,其餘的使用默認值。
2.asyncAssertSuccess頗有效的用來測試異步結果是否正確,這個變量沒有什麼參數,用來鏈接其餘handler。
清除Vert.x context是簡單的,咱們能夠用asyncAssertSuccess肯定沒有error發生:
service操做重要的是CURD操做,JUnit測試集成了全部的這種測試方法:
1.這是Async最後執行的地方。
2.這是一種可選的方案退出測試用例,依賴於JUnit的超時機制,測試線程等Async完成或者超時。
原文連接:http://vertx.io/docs/guide-for-java-devs/
個人微信公衆號: