本節說明在變更專案後,如何執行及參與 Trade Federation 測試。蒐集的資料包括:
- 新增單元測試類別的位置
- 在 Eclipse 和 Eclipse IDE 以外執行單元測試
- 新增功能測試的位置
- 執行功能測試
- 在本機執行部分 TF 預先提交驗證
新增單元測試
在 Android 開放原始碼計畫 (AOSP) 中,於下列位置新增單元測試類別:tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java
重要事項:將新的單元測試類別新增至這些位置後,系統就會在預先提交時自動執行這些類別,不需額外設定。
執行單元測試
Trade Federation 的所有 AOSP 單元測試和功能測試都位於
tools/tradefederation/core/tests
專案中。
在 Eclipse 中,如要執行個別單元測試,只要在測試上按一下滑鼠右鍵,然後選取「Run As > JUnit」即可。如要執行所有單元測試,請執行 com.android.tradefed.UnitTests 套件。
您也可以在建構後,從 Tradefed 來源樹狀結構的指令列啟動單元測試,如下所示:
tools/tradefederation/core/javatests/run_tradefed_tests.sh
單元測試可以單獨執行,但功能測試應使用 Trade Federation 本身執行,且需要 Android 裝置。所有功能測試都應遵循 *FuncTest
命名慣例。
檢查單元測試結果
執行 run_tradefed_tests.sh
時,單元測試會練習測試架構的所有部分,包括一些錯誤情況。這會在主控台中列印詳細輸出內容,包括堆疊追蹤。
結果的最終摘要會指出是否發生失敗。
控制台中的最終摘要範例:
12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]
所有測試都會維持通過狀態,因此如果本機變更發生任何失敗,請務必修正測試。
新增功能測試
如果功能測試涉及裝置 (使用任何
ITestDevice
API),套件定義會位於com.android.tradefed.DeviceFuncTests
中。否則,套件定義位於com.android.tradefed.FuncTests
。如果測試方法適合放在現有的套件子類別中,建議您新增至該處。否則,請隨意將新類別新增至適用的套件。
無論是哪種情況,只要將測試新增至套件,系統就會在 CI 管道中自動執行測試,以及其他功能測試。
執行功能測試
如要從 Eclipse 執行功能測試,請按照下列步驟操作:
- 確認裝置已連線至主機,且
adb
(如有需要,也請確認fastboot
) 位於 Eclipse 的 PATH 中。最簡單的方法是從設定適當 PATH 的殼層啟動 Eclipse。 - 建立 Java 應用程式。透過「Run」>「Run configurations」執行設定。
- 將專案設為
tradefed-tests
,並將主要類別設為com.android.tradefed.command.CommandRunner
。 - 執行
m tradefed-all
。 - 在「Arguments」分頁中提供下列指令列引數:
host --class <full path of test class to run>
- 按一下「Run」。
在 Eclipse 以外執行功能測試。
- 建立貿易聯盟。
- 將 Android 裝置連上主機。
- 執行
tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
- (選用) 選擇裝置,方法是附加
--serial <serial no>
,如adb devices
的輸出內容所示。
針對本機變更執行 TF 預先提交測試
如要以類似 TF 預先提交的方式執行,請使用下列指令:
tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh
這會針對您在本機建構的 TF 觸發所有 TF 預先提交測試,協助您驗證變更是否會導致任何測試失敗。
TF 預先提交測試是上述單元測試的超集,但執行速度較慢。因此建議您在開發期間執行單元測試,以加快驗證速度,並在上傳 CL 前執行預先提交。