編寫交易測試執行者

本頁面說明如何在 Tradefed 中編寫新的測試執行器。

背景

如想瞭解在交易架構中測試跑者的位置, 請參閱「測試執行器的結構」。

撰寫新測試執行工具並非必要條件;測試執行工具 然後單獨編寫

基本規定:實作介面

只有達到 IRemoteTest 介面 具體來說是 run(TestInformation testInfo, ITestInvocationListener listener) 方法

此方法是在使用測試執行器時由控管工具叫用的方法。 與 Java Runnable 類似

該方法的每個部分都會視為測試執行器執行作業的一部分。

回報測試執行工具的結果

基本介面的 run 方法可讓您存取 類型:ITestInvocationListener。這個物件是報表結構 從測試跑者到控管工具產生的結果

回報結構化結果時,測試執行工具會具備下列屬性:

  • 報告一份適當清單,列出所有已執行的測試、測試花費的時間,以及是否 這些屬性會個別通過、失敗或其他狀態
  • 回報與測試相關的指標 (如適用),例如 安裝期間指標
  • 適合大部分的基礎架構工具,例如顯示結果 指標等等
  • 通常更容易偵錯,因為

換句話說,回報結構化資料為選用功能。測試執行工具 只想在沒有 PASSED 或 FAILED 的情況下,評估整個執行作業的狀態即可 任何實際執行細節

您可以在監聽器上呼叫下列事件,通知利用 目前的執行進度:

  • testRunStarted:通知一組測試用案例的開頭 相關的所有內容
    • testStarted:通知開始測試案例的開頭。
    • testFailed/testIgnored:通知測試案例狀態變更 正在進行中。沒有任何狀態變更的測試案例都會視為測試案例 成功。
    • testEnded:通知測試案例結束。
  • testRunFailed:通知各組測試案例的整體狀態 就會失敗「測試執行」可以是「通過」或「失敗」 測試案例的獨立結果,取決於使用者 正常執行。例如,在執行多個測試案例的二進位檔中 可以回報所有「通過」測試案例,但產生錯誤結束代碼 (適用於 原因:檔案外洩等)。
  • testRunEnded:通知測試案例群組結束。

維護及確保回呼的順序正確 測試執行工具實作工具的責任,例如確保 如果使用 finally 子句發生例外狀況,系統會呼叫 testRunEnded

測試案例回呼 (testStartedtestEnded 等) 為選用項目。測試 可能會在沒有測試案例的情況下執行

您可能會發現,這個事件結構是來自 一般 JUnit 結構。 目的是讓開發人員瞭解基本原則 通常具備專業知識

回報測試執行工具的記錄

如果您是自行撰寫交易測試類別或執行者,則需將 IRemoteTest 並透過 run() 方法取得 ITestInvocationListener。這個事件監聽器 可用於記錄檔,如下所示:

    listener.testLog(String dataName, LogDataType type_of_data, InputStreamSource data);

使用裝置進行測試

上述的最低介面可讓您執行非常簡單的獨立測試 而且不需要任何特定資源,例如 Java 單元測試。

如要進行裝置測試的下一個步驟,測試寫入者必須符合下列條件: 下列介面:

測試執行器通常對這些介面感興趣 與執行作業相關的構件 (例如額外檔案) 要在執行期間鎖定的受測試裝置。

使用多部裝置測試

換購支援可同時在多部裝置上執行測試。這是 相當適合用來測試需要外部互動的元件 手機和手錶配對

如要編寫可使用多部裝置的測試執行器,您需要 實作 IMultiDeviceTest、 這樣就能接收 ITestDeviceIBuildInfo 的對應,其中包含 裝置表示法的完整清單及相關建構資訊。

系統一律會在 run 方法之前呼叫介面的 setter,因此 可以放心假設在呼叫 run 時,結構可供使用。

測試瞭解其設定

執行某些測試執行工具時,可能需要瞭解整體設定 才能正常運作,例如與叫用作業相關的中繼資料 target_preparer的執行日期等等。

為此,測試執行器可以存取 IConfiguration 物件 也會執行這項作業詳情請參閱 設定物件 的說明。

如要執行測試執行工具,您需要將 IConfigurationReceiver 接收 IConfiguration 物件。

彈性測試執行工具

測試執行者可以靈活地執行測試 更精細地控管元件 例如建立 JUnit 測試執行器 執行每個單元測試

如此一來,更大規模的管理工具和基礎架構 就能精細控管 讓使用者透過篩選來執行部分測試執行器。

如需篩選支援的相關說明,請參閱 ITestFilterReceiver 介面, 以便接收一組 includeexclude 篩選器來進行測試 應該或不應該執行的

根據我們的慣例,系統會根據下列一或多項因素,執行 IFF 測試 包含篩選器「且」與任何「排除」篩選器不符。如果不包含 當所有測試都不符合 排除篩選器