將選項和過濾器傳遞給套件和模塊

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