加入單元和功能測試

本節說明如何在對專案進行變更後,執行並貢獻 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

單元測試可獨立執行,但功能測試應搭配商業聯盟本身執行;這類測試需要使用 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。最簡單的方法是使用正確的 PATH 從 Shell 設定啟動 Eclipse。
  2. 建立 Java 應用程式。透過「Run」>「Run configurations」執行設定。
  3. 請將專案設為 tradefed-tests,並將主要類別設為 com.android.tradefed.command.CommandRunner
  4. 執行 m tradefed-all
  5. 在「引數」分頁中提供下列指令列引數:host --class <full path of test class to run>
  6. 按一下「Run」。

在 Eclipse 以外的地方執行功能測試。

  1. 建立貿易聯盟。
  2. 將 Android 裝置連接到主機。
  3. 執行 tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
  4. 您也可以選擇在 adb devices 的輸出內容中附加 --serial <serial no>,藉此選擇裝置。

針對本機變更執行 TF 提交前測試

如果您想以與 TF 預提交類似的方式執行,請使用以下指令碼:

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

這會針對您在本機建構的 TF 觸發所有 TF 提交前測試,協助您驗證變更不會破壞任何測試。

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