uiAutomator测试类的参数

时间:2014-01-31 15:43:26

标签: android uiautomator

我是uiAutomator的新手。我尝试将参数传递给方法,它运行但只是忽略传递给它的任何东西。 只是想知道我们是否可以将任何参数传递给uiAutomator中的测试类或测试方法?

3 个答案:

答案 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

Instrumentation documentation

答案 2 :(得分:0)

Reference

您可以通过命令行发送参数:

adb shell am insrument -e <NAME> <VALUE> <package/runner>

如果覆盖InstrumentationTestRunner的onCreatemethod,则可以使用可用的包访问该值。

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  value = (String) savedInstanceState.get("name");
}