命令行如下:
adb shell uiautomator runtest Test.jar -e runtype repeat -c com.yuchaolee.lau.MyTest.MTest
裏面有個參數e,後跟的runtype和repeat分別是值的key和value。
代碼段:
1
2
3
4
5
|
public void
testLau() throws Exception
{
Bundle
bundle = getParams();
String
runType = bundle.getString( "runtype" );
System.out.println(runType);
}
- 支持三個子命令:rutest/dump/events
- runtest命令-c指定要測試的class文件,用逗號分開,沒有指定的話默認執行測試腳本jar包的所有測試類.注意用戶可以以格式$class/$method來指定只是測試該class的某一個指定的方法
- runtest命令-e參數可以指定是否開啓debug模式
- runtest命令-e參數可以指定test runner,不指定就使用系統默認。我自己從來沒有指定過
- runtest命令-e參數還可以通過鍵值對來指定傳遞給測試類的參數
同時我們這裏會涉及到幾個重要的類,我們這裏先列出來給大家有一個初步的印象:
Class
|
Package
|
Description
|
Launcher
|
com.android.commands.uiautomator
|
uiautomator命令的入口方法main所在的類
|
RunTestCommand
|
com.android.commands
|
代表了命令行中‘uiautomator
runtest'這個子命令
|
EventsCommand
|
com.android.commands
|
代表了命令行中‘uiautomator
events’這個子命令
|
DumpCommand
|
com.android.commands
|
代表了命令行中‘uiautomator
dump’這個子命令
|
UIAutomatorTestRunner
|
com.android.uiautomator.testrunner
|
默認的TestRunner,用來知道測試用例如何執行
|
TestCaseCollector
|
com.android.uiautomator.testrunner
|
用來從命令行和我們的測試腳本.class文件收集每個測試方法然後建立對應的junit.framework.TestCase測試用例的一個類,它維護着一個List<TestCase>
mTestCases列表來存儲所有測試方法(用例)
|
UiAutomationShellWrapper
|
com.android.uiautomator.core
|
一個UiAutomation的wrapper類,簡單的做了封裝,其中提供了一個setRunAsMonkey的方法來通過ActivityManagerNativeProxy來設置系統的運行模式
|
UiAutomatorBridge
|
com.android.uiautomator.core
|
相當於UiAutomation的代理,基本上所有和UiAutomation打交道的方法都是通過它來分發的
|
ShellUiAutomatorBridge
|
com.android.uiautomator.core
|
UiAutomatorBridge的子類,額外增加了幾個不需要用到UiAutomation的方法,如getRotation
|
|