2014-01-31 4 views
1

Я новичок в uiAutomator. Я пробовал передавать параметры методу, он запускался, но просто игнорировал все, что передавалось ему. Просто интересно, можем ли мы передать любые аргументы для тестирования класса или метода тестирования в uiAutomator?Параметры для класса проверки uiAutomator

ответ

0

Reference

Вы можете отправить в параметрах с помощью командной строки:

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

Вы можете получить доступ к значению, используя пакет, который доступен, если переопределить onCreatemethod в InstrumentationTestRunner.

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

Я понятия не имею, почему этот ответ отправил в два раза, и это дважды принято неправильно. Разве вы не видите разницу между ** uiautomator ** и ** контрольно-измерительными приборами **? OP спрашивает о тестировании черного ящика через uiautomator, и правильный ответ приведен ниже @diptia – Ghedeon

3

Вы не должны вызывать onCreate, чтобы получить переданные значения аргументов. При передаче параметров в TestCase с помощью

adb shell uiautomator runtest UiTest.jar -c package.name.ClassName -e stringKey stringValue

, где в TestCase вы хотите получить доступ к stringValue, используйте:

String stringValue = getParams().getString("stringKey");

+0

Эй, @diptia, команда, которая у вас есть, не работает .. Это работает для вас? если да, пожалуйста, поделитесь тем, как вы выполнили свою команду –

+0

, ответ правильный и должен быть принят вместо текущего. – Ghedeon

1

Я знаю, что этот вопрос немного старый, но я только начал работая над проектом UIAutomator и рассчитывая, что я поделюсь тем, что нашел.

Оригинальный вопрос немного неоднозначный. Кажется, из существующих ответов каждый предположил, что речь идет о аргументах командной строки/аргументах запуска, поэтому я собираюсь последовать их примеру.

Ни один из них не работал хорошо для того, что я делал. Первый может быть использован, я думаю, но его немного переборщить, чтобы переместиться на CreateCreate для такой простой задачи. Второй, похоже, совсем не работает для меня. Я считаю, что ему не хватает информации.

Получить параметры - это вызов из аргумента Bundle. Вам нужно получить от контрольно-измерительного теста. Вы можете сделать это в AndroidTest, позвонив InstrumentationRegistry

Bundle testBundle = InstrumentationRegistry.getArguments(); 

Затем вы можете сделать ПОЛУЧИТЬ строку вызова из этого пучка.

testBundle.getString(key); 

Я не знаю, как это сделать именно от затмения или андроида студии, но из командной строки вы можете указать работает тест с помощью следующей 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

Смежные вопросы