WMQTest 介面
針對「IBM® MQ 探險家」所撰寫的測試,必須屬於會延伸所提供 WMQTest 類別的 Java™ 類別。本主題說明所提供之方法的介面和作業。
測試屬性
使用屬性集合,在外掛程式資訊清單檔 (plugin.xml) 中定義測試。下表列出測試的屬性。
屬性 | 說明 |
---|---|
id | 提供測試唯一 ID 的字串。 |
名稱 | 測試的有意義名稱。 |
類別 | 包含測試原始碼的 Java 類別名稱。 |
testset | 定義顯示測試的群組之字串;例如 wmq,它會在佇列管理程式測試種類中顯示測試。 |
testsubset | 定義顯示測試的子群組之字串;例如 queues,它會在佇列種類中顯示測試。 |
說明 | 描述測試用途的簡要說明。 |
furtherinfo | 包含測試詳細資訊的 HTML 或 XHTML 文件的位置。當您在「執行測試」對話框中按兩下測試,或在「測試結果」視圖中按兩下測試結果時,「IBM MQ 探險家」中即會顯示此文件。 |
您可以在 plugin.xml 檔中指定這些屬性的值來定義測試。這些屬性也可利用下表所列出的 WMQTest 方法,以程式設計方式來存取。
方法 | 說明 |
---|---|
getTestID() | 傳回測試 ID。 |
getTestName() | 傳回測試的名稱。 |
getDescription() | 傳回測試的說明。 |
getTestSet() | 傳回已建立為測試母項之測試集物件的控點。 |
getFurtherInfoPath() | 傳回包含測試詳細資訊的 XHTML 或 HTML 文件的位置。 |
建立測試
「IBM MQ 探險家測試」引擎使用提供的建構子 WMQTest(),將測試物件實例化。這個建構子並不需要子類別化。
測試結構
WMQTest 方法 runTest 定義測試的主體,且可呼叫來啟動測試執行作業。
runTest 方法的結束並不代表測試的結束;您必須利用 testComplete 方法來明確指定測試的結束。您可以實作測試,讓它們能夠非同步取得物件資料。
runTest 方法會送出要求來取得物件相關資料,而測試會從接收回覆的接聽器方法執行。這可讓測試等待資料,而不需要您實作執行緒等待;範例 3 即示範這種方式。
如果測試中需要手動等待(休眠),您可以使用物件監視器來讓測試物件使用 Java wait 和 notify 方法。測試引擎的執行緒作業實作時不需要使用個別測試物件的物件監視器。
執行測試
「IBM MQ 探險家測試」引擎會呼叫 runTest(WMQTestEngine, IProgressMonitor,contextObjects, treeNode) 來啟動測試執行作業。測試主體必須在這裡。
- WMQTestEngine
- WMQTestEngine 參數為執行測試的測試引擎提供控點。
此參數可讓測試在進行時利用測試引擎的 returnResult(WMQTestResult[], WMQTest) 方法傳回結果。
此方法的第一個參數 (WMQTestResult[]) 包含所要傳回的結果,第二個參數 (WMQTest) 必須是 'this',測試引擎才能知道結果來自哪裡。您可以選擇利用 WMQTestEngine 參數傳回暫時結果 - 此外,也可在測試完成時傳回測試結果(請參閱完成測試)。
- IProgressMonitor
- IProgressMonitor 參數提供現行測試執行所用之 GUI 回應監視器的控點。這可讓您的測試同時提供目前執行的作業和子作業的文字回應,以及目前完成狀況的進度列。
「進度監視器」的控點是由 runTest 的預設實作快取,因此如果使用此參數,則也可利用 WMQTest 方法 getGUIMonitor() 來存取「進度監視器」的控點。
「進度監視器」是一種 Eclipse 核心資源。有關其使用上的其他建議,請參閱 Web 上的 Eclipse API 文件。
- contextObjects
- contextObjects 參數提供 MQExtObject 陣列。此參數提供所要執行之測試的環境定義,以便在使用者開啟「執行測試」對話框時預先選取相關勾選框。
- treeNode
- treeNode 參數記錄在「導覽器」視圖中點按之後執行預設測試或開啟「執行測試」對話框的資料夾或物件。
使用者喜好設定
測試必須符合使用「Eclipse 喜好設定」對話框提供的使用者喜好設定。請使用下列方法來存取喜好設定:
- PreferenceStoreManager.getIncludeHiddenQmgrsPreference():如果您在測試中併入「IBM MQ 探險家」所隱藏的佇列管理程式,則會傳回 true;如果必須排除這些佇列管理程式,則會傳回 false。
- PreferenceStoreManager.getIncludeSysObjsPreference():如果測試中必須包括系統物件(名稱以 SYSTEM 開頭的物件),則會傳回 true;如果必須排除系統物件,則會傳回 false。
完成測試
您可以呼叫 testComplete(WMQTestResult[]),再將它傳遞至測試結果物件的陣列中,以完成測試。請參閱建立測試結果,以取得測試結果物件的指引。
您可以使用此方法,於完成時傳回結果,此外,也可在測試執行期間傳回測試結果(如執行測試中所述)。不過,任何傳回兩次的結果,也會顯示兩次。
即使您的測試使用 WMQTestEngine 方法 returnResult 來傳回其所有結果,在完成時仍須呼叫 testComplete。這是完成測試處理的必要動作。如果沒有需要傳回的新結果,您可以在 testComplete 方法中提供 WMQTestResult 物件的空陣列。
如需相關資訊,請參閱測試結構。
建立測試結果
測試結果會實作為 WMQTestResult 物件。請利用下列指令來建立結果:
WMQTestResult(int severity, String description, String qmgrname, String objectType)
其中:
- severity 是識別問題嚴重性的整數。請使用下列其中一種嚴重性層次:IMarker.SEVERITY_ERROR、IMarker.SEVERITY_WARNING 或 IMarker.SEVERITY_INFO。
- description 是要在「問題視圖」中顯示的字串,說明測試所發現的問題。
- qmgrname 是發現問題所在的佇列管理程式名稱。
- objectType 是字串,指定發生問題的物件類別,例如,「佇列」或「通道」。
如需如何處理已建立之測試結果物件的相關資訊,請參閱完成測試。
處理取消
您可以取消執行中的測試執行作業。請使用 isCancelled() 方法來檢查測試是否必須停止。
所謂優良的測試,必須定期檢查是否已被取消,以免對使用者造成不必要的延誤。
如果您嘗試取消測試,但該測試已有很長一段時間沒有回應,測試引擎便會藉由結束正在執行測試的執行緒來強制停止測試。請不要依賴這個方法,最理想的方法是測試即時回應,讓測試清除它所用的任何資源,以及傳回到目前為止所產生的任何測試結果。
測試文件
您可以提供其他文件來說明其傳回的結果,以及提供解決問題時所必須執行之動作的相關指引。
請以提供測試之外掛程式的 plugin.xml 檔中識別的位置來提供 HTML 格式的文件。如需使用 XML 中定義測試的詳細資料,請參閱建立新測試。
HTML 文件檔的位置可以是:
- 內部 - 儲存於提供測試本身的外掛程式專案中。此位置必須定義於 plugin.xml 檔本身相對的 XML 中。例如 doc/TestDoc.html
- 外部 - 儲存於 Web 伺服器上,使得文件的維護可以與測試本身分開。此位置必須定義成開頭為 'http://' 的完整 URL。