2010-07-12 2 views
20

Я развиваюсь в Android, я использую аппаратуру для тестирования приложения для телефона. Инструментарий - Android env для тестирования приложений.Как я могу доставить параметры к тестовой функции, которая запущена с помощью команды adb shell am Instrumentation

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

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

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

ответ

43

вы можете передать данные uri, mime type и даже «extras» в am command.

утра [пуск | инструмент]

утра начать [-a < действие >] [-d ]
[-t <mime_type>] [-c < категории > [-c < категория >] ...]
[-e <extra_key> <extra_value>
[-e <extra_key> <extra_value> ...]
[-n ​​< компонент >] [-D] [< > URI]

утра инструмент [-e <arg_name> <arg_value>] [-p <prof_file>] [-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"); 
} 
+0

Hi Ryan я потратил немного времени на уход за хороший пример того, как я могу поставить параметр/с для моего теста - Извините просто не мог найти что-то полезно. Можете ли вы отправить некоторую ссылку или фрагмент кода в java apk, который должен получить эти параметры (дополнительные) и пример того, как я пишу команду запуска adb shell am start, что предоставляет дополнительные функции для теста на цель. Ilana – ilana

+0

Все примеры, которые я имею, не касаются параметров pass для тестирования, запущенного командой am ... Я действительно выполнил поиск – ilana

+0

. Я обновил свой ответ на примере, который должен работать, чтобы получить дополнительные настройки, установленные с am start –

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

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

Передайте в в параметре: (например, -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

Это то, что мне было нужно, так как я не делал этого в Activity – wangburger