首先,請務必瞭解 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