本節說明在對項目進行更改後如何運行和參與 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 本身執行;他們需要安卓設備。所有功能測試都應遵循命名約定*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 從 shell 設置啟動 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>
- 單擊運行。
在 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 之前運行預提交。