Пользовательский параметр при запуске теста Android из командной строки - PullRequest
1 голос
/ 28 февраля 2012

Я могу запускать тесты Junit / Robotium для приложений Android из командной строки следующим образом:

adb shell am instrument -w com.myapp.client.test/android.test.InstrumentationTestRunner

Однако я хочу как-то включить пользовательский параметр, который позволяет мне указать, будет ли тест выполняться в режиме «Портрет» или в режиме «ландшафт».

Как я могу:

  1. указать этот пользовательский параметр в командной строке?

  2. Как получить доступ к значению этого пользовательского параметра в коде Java?

Спасибо

Ответы [ 4 ]

2 голосов
/ 06 апреля 2013

Вы можете указать пользовательский параметр, используя

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

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

например:

public void onCreate(Bundle savedInstanceState) {

 super.onCreate(savedInstanceState);

 value = (String) savedInstanceState.get("name");

}
2 голосов
/ 12 мая 2012

Вы можете расширить инструмент запуска Android Instrumentation и метод override oncreate () , чтобы получить пользовательский параметр из командной строки. При выполнении тестовых примеров используйте свой настраиваемый инструментальный инструмент.

public class CustomInstrumentationRunner extends android.test.InstrumentationTestRunner{

@Override
public void onCreate(Bundle arguments) {
    //process you parameters here.     
super.onCreate(arguments);
}

@Override
public void onStart() {
    try {
       logger = CustomLogger.GetLogger();
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    super.onStart();
}
0 голосов
/ 03 апреля 2013

Как я это сделал:

Перед запуском теста я сохраняю текстовый файл в sdcard \

При запуске теста в setUp я анализирую каждую строкутекстового файла и извлеките ключ / значение

arg1 = значениеX arg2 = значение Y

0 голосов
/ 02 марта 2012

Я решил взломать это. Не похоже, что здесь есть чистое решение.

Мой хак - использовать атрибуты "small", "medium" и "large", которые вы можете прикрепить к тестам.

   @MediumTest
    public void testPortraitTest1() throws Exception{
        this.MetaDataTest(Solo.PORTRAIT);        
    }

    @LargeTest
    public void testLanscapeTest1() throws Exception{
        this.MetaDataTest(Solo.LANDSCAPE);        
    }

затем вы можете использовать ваш пакетный файл для вызова сначала средних тестов, а затем больших тестов, например:

adb shell am instrument -w -e size medium com.me.client.test/android.test.InstrumentationTestRunner 
adb shell am instrument -w -e size large com.me.client.test/android.test.InstrumentationTestRunner

позор на Google за то, что не сделал это проще.

...