Как я могу доставить параметры к тестовой функции, которая запускается с помощью команды adb shell am Instrumentation
Я развиваюсь в Android, я использую аппаратуру для тестирования приложения для телефона.
Инструментарий - Android env для тестирования приложений.
Для этого я использую команду am с именем тестового примера.
Я запускаю adb, затем я ввожу adb shell, а затем пишу в shell команду am.
Я хочу передать параметр вместе с этой командой am.
Я хочу сказать, что хочу доставить параметры к тесту, запущенному командой am.
Возможно ли это???
Пожалуйста, помогите?
Ответы
Ответ 1
вы можете передать данные uri, mime type и даже "extras" в команду am.
am [начало | инструмент]
am start [-a < действие > ] [-d <data_uri > ]
[-t <mime_type > ] [-c <category> [-c <category> ]...]
[-e <extra_key > <extra_value >
[-e <extra_key > <extra_value > ...]
[-n <component> ] [-D] [<uri> ]
am instrument [-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" );
}
Ответ 2
Передайте параметр в: (например, -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");
}
}
Ответ 3
точно:
./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 ( );
Ответ 4
Поскольку вы уже работаете на Android sdk, учитывая, что вы знаете местоположение sdk в своей системе -
Перейти к местоположению sdk на терминале (командная строка) → type adb shell → type am help
с примером
http://whenpridefucks.blogspot.in/2011/12/android-send-broadcast-intents-via-adb.html