Как передать параметры в тестовую функцию, запущенную с помощью команды adb shell am Instrumentation? - PullRequest
25 голосов
/ 12 июля 2010

Я работаю в Android, использую инструментарий для тестирования приложения Phone. Инструментарий Android Env для тестирования приложений.

Для этого я использую команду с именем контрольного примера. Я запускаю adb, затем вхожу в adb shell, затем пишу в shell команду am.

Я хочу передать параметр вместе с этой командой am. Я имею в виду, что хочу передать параметры в тест, запущенный командой am.

Возможно ли это ??? Пожалуйста, помогите?

Ответы [ 4 ]

50 голосов
/ 12 июля 2010

вы можете передать данные URI, MIME-тип и даже «дополнительные» в команду am .

am [start | instrument]

amначать [-a ] [-d]
[-t] [-c [-c ] ...]
[-e
[-е...]
[-n ] [-D] []

am инструмент [-e] [-п] [-w]

Вы можете передать их как «дополнения», а затем получить дополнительные, которые ему передаются.

Вы могли бы передать их так:

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" );
}
14 голосов
/ 11 января 2016

Передайте параметр в: (например, -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");
    }
}
0 голосов
/ 13 марта 2015

Поскольку вы уже работаете над Android SDK, если вы знаете местоположение SDK в вашей системе - Перейдите в папку sdk на терминале (командная строка) -> введите adb shell -> введите am help

с примером http://whenpridefucks.blogspot.in/2011/12/android-send-broadcast-intents-via-adb.html

0 голосов
/ 21 января 2014

точно равно:

 ./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 -> uir для запуска приложения основного класса. перейдет в ваше приложение param user_id = 1 а на классе SelectCardActivity вы получите его следующим образом:

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