包括單元和功能測試

本節說明在對項目進行更改後如何運行和參與 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 運行功能測試:

  1. 確保設備已連接到主機,並且adb和必要時fastboot位於 Eclipse 的 PATH 中。最簡單的方法是使用正確的 PATH 從 shell 設置啟動 Eclipse。
  2. 創建 Java 應用程序。通過Run > Run configurations 運行配置
  3. 將項目設置為tradefed-tests並將主類設置為com.android.tradefed.command.CommandRunner
  4. 運行m tradefed-all
  5. Arguments選項卡中提供以下命令行參數: 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 之前運行預提交。