包括單元測試和功能測試

本節介紹如何在對專案進行更改後執行 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 執行功能測試:

  1. 確保已連接到主機,並且adbfastboot (如果需要)位於 Eclipse 的 PATH 中。最簡單的方法是從具有正確路徑的 shell 設定啟動 Eclipse。
  2. 建立一個 Java 應用程式。透過運行 > 運行配置運行配置
  3. 將專案設定為tradefed-tests並將主類別設定為com.android.tradefed.command.CommandRunner
  4. 運行m tradefed-all
  5. 「參數」標籤中提供以下命令列參數: host --class <full path of test class to run>
  6. 單擊運行

在 Eclipse 外部執行功能測試。

  1. 建立貿易聯盟。
  2. 將 Android 裝置連接到主機。
  3. 執行tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
  4. (可選)透過附加--serial <serial no>來選擇設備,因為它出現在adb devices的輸出中。

針對本地更改運行 TF 預先提交測試

如果您想以與 TF 預先提交類似的方式運行,請使用以下命令:

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

這將觸發針對您本機建置的 TF 的所有 TF 預先提交測試,以協助您驗證您的變更不會破壞任何測試。

TF 預提交測試是上述單元測試的超集,但運行速度較慢。因此,建議在開發期間執行單元測試以加快驗證速度,並在上傳 CL 之前執行預提交。