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 參數記錄在「導覽器」視圖中點按之後執行預設測試或開啟「執行測試」對話框的資料夾或物件。
使用者喜好設定
測試必須符合使用「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
是字串,指定發生問題的物件類別,例如,「佇列」或「通道」。
如需如何處理已建立的測試結果物件的相關資訊,請參閱 完成測試。
處理取消
您可以取消執行中的測試執行作業。 請使用 isCancelled()
方法來檢查測試是否必須停止。
所謂優良的測試,必須定期檢查是否已被取消,以免對使用者造成不必要的延誤。
如果您嘗試取消測試,但該測試已有很長一段時間沒有回應,測試引擎便會藉由結束正在執行測試的執行緒來強制停止測試。 請不要依賴這個方法,最理想的方法是測試即時回應,讓測試清除它所用的任何資源,以及傳回到目前為止所產生的任何測試結果。
測試文件
您可以提供其他文件來說明其傳回的結果,以及提供解決問題時所必須執行之動作的相關指引。
請以提供測試之外掛程式的 plugin.xml 檔中識別的位置來提供 HTML 格式的文件。 如需在 XML 中定義測試的詳細資料,請參閱 建立新的測試。
HTML 文件檔的位置可以是:
- 內部 - 儲存於提供測試本身的外掛程式專案中。 此位置必須定義於 plugin.xml 檔本身相對的 XML 中。 例如 doc/TestDoc.html
- 外部 - 儲存於 Web 伺服器上,使得文件的維護可以與測試本身分開。 此位置必須定義成開頭為 'http://' 的完整 URL。