我是uiAutomator的新手。我尝试将参数传递给方法,它运行但只是忽略传递给它的任何东西。 只是想知道我们是否可以将任何参数传递给uiAutomator中的测试类或测试方法?
答案 0 :(得分:3)
您不必调用onCreate
来获取传递的参数值。使用
adb shell uiautomator runtest UiTest.jar -c package.name.ClassName -e stringKey stringValue
在您希望访问stringValue的测试用例中,使用:
String stringValue = getParams().getString("stringKey");
答案 1 :(得分:2)
我知道这个问题有点陈旧但我刚刚开始研究UIAutomator项目,并认为我会分享我发现的东西。
原来的问题有点含糊不清。从现有的答案看来,每个人都认为问题是关于命令行参数/启动参数,所以我将效仿。
这两个回答者都没有为我正在做的事情做得很好。我认为第一个可以使用,但是对于这样一个简单的任务而言,过度使用onCreate有点过分。第二个似乎对我来说根本不起作用。我相信它缺少一些信息。
获取参数是来自参数Bundle的调用。您需要从仪器测试中获得。您可以通过调用InstrumentationRegistry
在AndroidTest中执行此操作Bundle testBundle = InstrumentationRegistry.getArguments();
然后你可以从该包中进行get字符串调用。
testBundle.getString(key);
我不确定如何从eclipse或android studio完全执行此操作,但是从命令行可以指定使用以下ADB调用来运行测试。
adb shell am instrument -w -r -e debug false -e class com.example.testApp.testappone.ExampleClass -e ParamKey 'your variable value' com.example.testApp.testappone.test/android.support.test.runner.AndroidJUnitRunner
只是为了显示一个完整的示例,如果您进行上面的adb调用,那么您将使用以下代码访问该参数。
@Test
public void FirstTest(){
Bundle testBundle = InstrumentationRegistry.getArguments();
String paramValue = testBundle.getString("ParamKey");
}
我确实想要注意你可以通过多种方式拨打adb,所以请不要使用仪器与uiautomator。重要的是您使用-e键值指定参数。
来源: Android Junit runner - used to run UI automator projects
和
答案 2 :(得分:0)
您可以通过命令行发送参数:
adb shell am insrument -e <NAME> <VALUE> <package/runner>
如果覆盖InstrumentationTestRunner的onCreatemethod
,则可以使用可用的包访问该值。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
value = (String) savedInstanceState.get("name");
}