系統狀態檢查器 (SSC) 是在套件層級設定,並在各個模組之間執行。這些檢查項目會判斷模組是否已變更,且未還原某些指定狀態,例如變更系統屬性值。
SSC 主要用於確保模組編寫者不會忘記在測試後清理;但如果忘記,請提供追蹤記錄,以便解決問題。
次要用途則是盡可能還原原始狀態,例如關閉已開啟的鍵盤保護裝置。
系統狀態檢查器 XML 定義
<system_checker class="com.android.tradefed.suite.checker.KeyguardStatusChecker" />
<system_checker class="com.android.tradefed.suite.checker.LeakedThreadStatusChecker" />
<system_checker class="com.android.tradefed.suite.checker.SystemServerStatusChecker" />
在 Tradefed 設定 XML 的 system_checker
標記下方定義 SSC。
實作
每個智慧型購物廣告活動 (SSC) 都必須實作 ISystemStatusChecker
介面,提供在每次執行模組前後執行的兩個主要方法:preExecutionCheck
和 postExecutionCheck
。
檢查器可以只實作這兩者之一,如果需要檢查模組前的狀態,並將其與模組後的狀態進行比較,則可以實作這兩者。
交易提供了幾個導入範例。建議每個實作項目都專注於單一檢查,以提高重複使用性。舉例來說,SystemServerStatusCheck
會檢查在執行測試套件期間,裝置上是否重新啟動 system_server
程序。在 postExecutionCheck
中,它會呼叫 NativeDevice
中定義的 deviceSoftRestarted
,檢查 system_server
程序是否已重新啟動。
每個作業都會傳回 StatusCheckerResult
,讓測試套件決定是否應擷取其他資訊 (例如錯誤報告)。
CTS 中的定義在哪裡?
如需 CTS 系統狀態檢查工具的定義,請參閱 /test/suite_harness/tools/cts-tradefed/res/config/cts-system-checkers.xml。
如何找出檢查器失敗情形
根據預設,系統檢查器失敗情況只會顯示在記錄中,並以錯誤報告形式記錄,且該呼叫的名稱會採用 bugreport-checker-post-module-<module name>.zip
格式。
您可以在這裡瞭解錯誤報告的產生模組後,
只要將 --report-system-checkers
選項設為 true
,即可讓系統檢查工具回報為測試失敗。這會導致測試執行作業顯示為失敗,失敗原因為狀態檢查器的特定檢查。