本頁面說明如何在 Tradefed 中編寫新的測試執行器。
背景
如想瞭解在交易架構中測試跑者的位置, 請參閱「測試執行器的結構」。
撰寫新測試執行工具並非必要條件;測試執行工具 然後單獨編寫
基本規定:實作介面
只有達到
IRemoteTest 介面
具體來說是 run(TestInformation testInfo, ITestInvocationListener listener)
方法
此方法是在使用測試執行器時由控管工具叫用的方法。 與 Java Runnable 類似
該方法的每個部分都會視為測試執行器執行作業的一部分。
回報測試執行工具的結果
基本介面的 run
方法可讓您存取
類型:ITestInvocationListener
。這個物件是報表結構
從測試跑者到控管工具產生的結果
回報結構化結果時,測試執行工具會具備下列屬性:
- 報告一份適當清單,列出所有已執行的測試、測試花費的時間,以及是否 這些屬性會個別通過、失敗或其他狀態
- 回報與測試相關的指標 (如適用),例如 安裝期間指標
- 適合大部分的基礎架構工具,例如顯示結果 指標等等
- 通常更容易偵錯,因為
換句話說,回報結構化資料為選用功能。測試執行工具 只想在沒有 PASSED 或 FAILED 的情況下,評估整個執行作業的狀態即可 任何實際執行細節
您可以在監聽器上呼叫下列事件,通知利用 目前的執行進度:
- testRunStarted:通知一組測試用案例的開頭
相關的所有內容
- testStarted:通知開始測試案例的開頭。
- testFailed/testIgnored:通知測試案例狀態變更 正在進行中。沒有任何狀態變更的測試案例都會視為測試案例 成功。
- testEnded:通知測試案例結束。
- testRunFailed:通知各組測試案例的整體狀態 就會失敗「測試執行」可以是「通過」或「失敗」 測試案例的獨立結果,取決於使用者 正常執行。例如,在執行多個測試案例的二進位檔中 可以回報所有「通過」測試案例,但產生錯誤結束代碼 (適用於 原因:檔案外洩等)。
- testRunEnded:通知測試案例群組結束。
維護及確保回呼的順序正確
測試執行工具實作工具的責任,例如確保
如果使用 finally
子句發生例外狀況,系統會呼叫 testRunEnded
。
測試案例回呼 (testStarted
、testEnded
等) 為選用項目。測試
可能會在沒有測試案例的情況下執行
您可能會發現,這個事件結構是來自 一般 JUnit 結構。 目的是讓開發人員瞭解基本原則 通常具備專業知識
回報測試執行工具的記錄
如果您是自行撰寫交易測試類別或執行者,則需將
IRemoteTest
並透過 run()
方法取得 ITestInvocationListener
。這個事件監聽器
可用於記錄檔,如下所示:
listener.testLog(String dataName, LogDataType type_of_data, InputStreamSource data);
使用裝置進行測試
上述的最低介面可讓您執行非常簡單的獨立測試 而且不需要任何特定資源,例如 Java 單元測試。
如要進行裝置測試的下一個步驟,測試寫入者必須符合下列條件: 下列介面:
- IDeviceTest
允許接收
ITestDevice
物件,代表位於 並提供 API 來與其互動。 - IBuildReceiver
可讓測試取得在
IBuildInfo
建構供應器步驟 包含測試設定的所有相關資訊和構件
測試執行器通常對這些介面感興趣 與執行作業相關的構件 (例如額外檔案) 要在執行期間鎖定的受測試裝置。
使用多部裝置測試
換購支援可同時在多部裝置上執行測試。這是 相當適合用來測試需要外部互動的元件 手機和手錶配對
如要編寫可使用多部裝置的測試執行器,您需要
實作
IMultiDeviceTest、
這樣就能接收 ITestDevice
至 IBuildInfo
的對應,其中包含
裝置表示法的完整清單及相關建構資訊。
系統一律會在 run
方法之前呼叫介面的 setter,因此
可以放心假設在呼叫 run
時,結構可供使用。
測試瞭解其設定
執行某些測試執行工具時,可能需要瞭解整體設定
才能正常運作,例如與叫用作業相關的中繼資料
target_preparer
的執行日期等等。
為此,測試執行器可以存取 IConfiguration
物件
也會執行這項作業詳情請參閱
設定物件
的說明。
如要執行測試執行工具,您需要將
IConfigurationReceiver
接收 IConfiguration
物件。
彈性測試執行工具
測試執行者可以靈活地執行測試 更精細地控管元件 例如建立 JUnit 測試執行器 執行每個單元測試
如此一來,更大規模的管理工具和基礎架構 就能精細控管 讓使用者透過篩選來執行部分測試執行器。
如需篩選支援的相關說明,請參閱
ITestFilterReceiver 介面,
以便接收一組 include
和 exclude
篩選器來進行測試
應該或不應該執行的
根據我們的慣例,系統會根據下列一或多項因素,執行 IFF 測試 包含篩選器「且」與任何「排除」篩選器不符。如果不包含 當所有測試都不符合 排除篩選器