WMQTest 介面
針對 IBM® MQ Explorer 撰寫的測試必須屬於延伸提供的 WMQTest 類別的 Java 類別。 本主題說明所提供之方法的介面和作業。
測試屬性
使用屬性集合,在外掛程式資訊清單檔 (plugin.xml) 中定義測試。 下表列出測試的屬性。
屬性 | 說明 |
---|---|
id | 提供測試唯一 ID 的字串。 |
名稱 | 測試的有意義名稱。 |
類別 | 包含測試程式碼的 Java 類別名稱。 |
testset | 定義要在其中顯示測試的群組的字串; 例如,wmq,在 佇列管理程式測試 種類中顯示測試。 |
testsubset | 定義要在其中顯示測試的子群組的字串; 例如,queues,在 佇列 種類中顯示測試。 |
說明 | 描述測試用途的簡要說明。 |
furtherinfo | 包含測試詳細資訊的 HTML 或 XHTML 文件的位置。 當您在「執行測試」對話框中按兩下測試,或在「測試結果」視圖中按兩下測試結果時,此文件即會顯示在 IBM MQ Explorer 中。 |
您可以在 plugin.xml 檔中指定這些屬性的值來定義測試。 這些屬性也可利用下表所列出的 WMQTest 方法,以程式設計方式來存取。
方法 | 說明 |
---|---|
getTestID() |
傳回測試 ID。 |
getTestName() |
傳回測試的名稱。 |
getDescription() |
傳回測試的說明。 |
getTestSet() |
傳回已建立為測試母項之測試集物件的控點。 |
getFurtherInfoPath() |
傳回包含測試詳細資訊的 XHTML 或 HTML 文件的位置。 |
建立測試
「IBM MQ Explorer 測試」引擎會使用提供的建構子 WMQTest()
來實例化測試物件。 這個建構子並不需要子類別化。
測試結構
WMQTest
方法 runTest
會定義測試的主體,且會呼叫此方法來開始執行測試。
runTest
方法結束並不表示測試結束;您必須使用 testComplete
方法明確指定測試結束。 您可以實作測試,讓它們能夠非同步取得物件資料。
runTest
方法會提交要求以取得物件的相關資料,並使用接收回覆的接聽器方法執行測試。 這可讓測試等待資料,而不需要您實作執行緒等待; 這在 範例 3中示範。
如果測試中需要手動等待(休眠),您可以利用測試物件的物件監視器來使用 Java wait
和 notify
方法。 測試引擎的執行緒作業實作時不需要使用個別測試物件的物件監視器。
執行測試
IBM MQ Explorer 測試引擎會呼叫 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 參數會記錄按一下 Navigator 視圖中的哪個資料夾或物件,以執行預設測試或開啟「執行測試」對話框。
使用者喜好設定
測試必須符合使用「Eclipse 喜好設定」對話框提供的使用者喜好設定。 請使用下列方法來存取喜好設定:
- 如果您在測試中併入在 IBM MQ Explorer 中已隱藏的佇列管理程式,則
PreferenceStoreManager.getIncludeHiddenQmgrsPreference()
會傳回true
;如果必須排除它們,則會傳回false
。 - 如果存在系統物件(名稱以 SYSTEM 開頭的物件),則
PreferenceStoreManager.getIncludeSysObjsPreference()
會傳回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
是字串,提供可在其中找到問題的物件類別,例如 "Queues" 或 "Channels"。
如需如何處理已建立的測試結果物件的相關資訊,請參閱 完成測試。
處理取消
您可以取消執行中的測試執行作業。 使用方法 isCancelled()
來檢查測試是否必須停止。
所謂優良的測試,必須定期檢查是否已被取消,以免對使用者造成不必要的延誤。
如果您嘗試取消測試,但該測試已有很長一段時間沒有回應,測試引擎便會藉由結束正在執行測試的執行緒來強制停止測試。 請不要依賴這個方法,最理想的方法是測試即時回應,讓測試清除它所用的任何資源,以及傳回到目前為止所產生的任何測試結果。
測試文件
您可以提供其他文件來說明其傳回的結果,以及提供解決問題時所必須執行之動作的相關指引。
請以提供測試之外掛程式的 plugin.xml 檔中識別的位置來提供 HTML 格式的文件。 如需在 XML 中定義測試的詳細資料,請參閱 建立新的測試。
HTML 文件檔的位置可以是:
- 內部 - 儲存於提供測試本身的外掛程式專案中。 此位置必須定義於 plugin.xml 檔本身相對的 XML 中。 例如 doc/TestDoc.html
- 外部 - 儲存於 Web 伺服器上,使得文件的維護可以與測試本身分開。 此位置必須定義成開頭為 'http://' 的完整 URL。