如何将参数传递给使用adb shell am Instrumentation命令启动的测试功能

时间:2010-07-12 11:54:42

标签: android instrumentation

我正在开发Android,我正在使用工具来测试手机应用程序。 Instrumentation是Android环境来测试应用程序。

为此,我使用带有测试用例名称的am命令。 我运行adb,然后输入adb shell,然后在shell中写入am命令。

我希望与此am命令一起提供参数。 我的意思是我希望将参数传递给am命令启动的测试。

有可能??? 请帮帮忙?

5 个答案:

答案 0 :(得分:50)

你可以将数据uri,mime类型甚至“extras”传递给am command

  

am [start | instrument]

     

开始[-a< action>] [-d< data_uri>]
  [-t< mime_type>] [-c< category> [-c< category>] ...]
  [-e< extra_key> < extra_value>
  [-e< extra_key> < extra_value> ...]
  [-n< component>]   [-D] [< uri>]

     

是仪器[-e< arg_name> < arg_value>] [-p< prof_file>] [-w]< component>

您可以将它们作为“额外内容”传递,然后获取传递给它的额外内容。

你会像这样传递它们:

am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT 
  -e foo bar -e bert ernie -n my.package.component.blah

然后在你的代码中:

Bundle extras = this.getIntent ( ).getExtras ( );

if ( extras != null ) {
  if ( extras.containsKey ( "foo" ) ) {
    Log.d ( "FOO", extras.getString ( "foo" ) );
  } else {
    Log.d ( "FOO", "no foo here" );
  }

  if ( extras.containsKey ( "bert" ) ) {
    Log.d ( "BERT", extras.getString ( "bert" ) );
  } else {
    Log.d ( "BERT", "Bert is all alone" );
  }
} else {
  this.setTitle ( "no extras found" );
}

答案 1 :(得分:14)

将参数传递给:(例如,-e peerID SCH-I545)

adb -s 0915f98870e60701 shell am instrument -w -e class      /
com.example.android.testing.uiautomator.BasicSample.sendInvite /
-e peerID SCH-I545 /
com.example.android.testing.uiautomator.BasicSample.test/android.sup /
port.test.runner.AndroidJUnitRunner

在测试课程中:

{
    Bundle extras = InstrumentationRegistry.getArguments();
    String peerID = null;

    if ( extras != null ) {
        if ( extras.containsKey ( "peerID" ) ) {
            peerID = extras.getString("peerID");
            System.out.println("PeerID: " + peerID);
        } else {
            System.out.println("No PeerID in extras");
        }
    } else {
        System.out.println("No extras");
    }
}

答案 2 :(得分:0)

确切地说是:

 ./adb shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -e user_id 1 -n com.shortcut.activity/com.shortcut.activity.SelectCardActivity

com.shortcut.activity / com.shortcut.activity.SelectCardActivity - >你的主要课程活动启动应用程序。 将传递给您的app param user_id = 1 在类SelectCardActivity上你可以得到它:

  Bundle installparams = this.getIntent ( ).getExtras ( );

答案 3 :(得分:0)

由于您已经在使用Android sdk,因为您知道系统上的sdk位置 - 转到终端上的sdk位置(命令提示符) - >类型adb shell - >键入am help

以示例 http://whenpridefucks.blogspot.in/2011/12/android-send-broadcast-intents-via-adb.html

答案 4 :(得分:0)

要发送额外的值,您应该添加 -n(Component) 以使用 -e 发送额外的值

这里是发送多个键值的示例

adb shell am start -n com.example.jk.checkwifi/.MainActivity -e "imei" $myimei -e "ip" $IP

然后在活动中获取数据,在onCreate中获取这样的数据

ip = intent.getStringExtra("ip")