將選項和篩選器傳遞至套件和模組

首先,請務必瞭解 Tradefed 中的選項處理方式

套件設定說明套件結構中的兩個層:

  • 頂層套件
  • 模組

在非套件的 Tradefed 環境中,不必考慮這個問題,因為每個選項都會傳送至完整呼叫。在套件環境中,模組會與套件保持隔離,因此並非所有選項都適用於模組層級。

將選項傳遞至頂層套件

頂層套件的行為與標準 Tradefed 設定類似:完整設定 (包括套件執行器) 會接收所有選項,就像非套件的 Tradefed 設定一樣。

將選項傳遞至模組

模組預設不會收到任何傳遞至指令的選項。 他們必須明確指定目標,才能透過 module-arg 選項接收選項。模組選項的這種隔離方式可簡化偵錯作業。

例子:

cts-tradefed run cts --module-arg <module-name>:<option-name>:<option-value>

cts-tradefed run cts --module-arg CtsGestureTestCases:collect-tests-only:true

這個語法可確保目標模組會收到指定選項。

您也可以透過其他方式將選項傳遞至模組,例如 test-arg,這可讓您根據執行器類型或類別,將選項傳遞至每個模組的測試執行器。

例子:

cts-tradefed run cts --test-arg <test-class>:<option-name>:<option-value>

cts-tradefed run cts --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true

這個語法並非以特定模組為目標,而是以指定類別的所有測試執行器為目標。test-arg 只會將 IRemoteTest 的實作項目視為選項的潛在接收端。

在 java_test_host 中將選項傳遞至 Java 測試類別

如果您要將 @Option 新增至 java 測試類別,做為 java_test_host 建構目標的一部分,則需要使用下列項目來插入該選項:

cts-tradefed run cts --module-arg <module-name>:set-option:<option-name>:<option-value>

在此情境中,set-option 是測試架構中 HostTest 執行器的選項,可包裝 Java 類別以執行這些類別。

如果選項的 JAR 檔案目標包含多個測試類別,預設情況下,這些類別都應指定 @option,或使用下列語法指定單一類別:

cts-tradefed run cts --module-arg <module-name>:set-option:<class-name>:<option-name>:<option-value>

將篩選器傳遞至套件

如要從測試套件中篩選出部分測試,請使用 --include-filter--exclude-filter 分別強制納入或排除特定測試或模組。排除條件的優先順序較高。

格式如下:[abi] <module-name> [test name]

例如:

--include-filter CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases android.gesture.cts.GestureTest#testGetStrokes