首先,確保您了解 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