Как запустить UiAutomator из MainActivity?

Я реализую UiAutomator для своего приложения для автоматизации пользовательского интерфейса между приложениями. Я поместил его в класс AndroidTest. Он отлично работает, когда я запускаю свой тестовый класс, но мне нужно, чтобы он работал из моего приложения (не нужно подключать его к компьютеру). Я нашел это решение, но оно не работает:

 private void runTests() {
    Bundle arguments = new Bundle();
    final String packageName = getPackageName();
    final List<InstrumentationInfo> list =
            getPackageManager().queryInstrumentation(packageName, 0);
    if (list.isEmpty()) {
        return;
    }
    final InstrumentationInfo instrumentationInfo = list.get(0);
    final ComponentName componentName =
            new ComponentName(instrumentationInfo.packageName,
                    instrumentationInfo.name);

    arguments.putString("package",  "my package");
    startInstrumentation(componentName,null,arguments);
   }

По-видимому, аргумент UiAutomator инструментария возвращается null. Есть идеи, как запустить UiAutomator из основного приложения?


person Keivan Noroozi    schedule 17.02.2016    source источник
comment
Он отлично работает, когда я запускаю свой тестовый класс, но мне нужно, чтобы он запускался из моего приложения (не нужно подключать его к компьютеру) - вы не можете запускать инструментальные тесты таким образом. Их должен запускать тестовый бегун из подходящего процесса. Я реализую UiAutomator для своего приложения для автоматизации пользовательского интерфейса между приложениями — вы можете более подробно объяснить, что вы подразумеваете под этим.   -  person CommonsWare    schedule 17.02.2016


Ответы (1)


Это невозможно. См. этот ответ на аналогичный вопрос:

UiAutomator 2.0 полагается на инструментарий, который доступен только при запуске теста с использованием инструмента am... Обычные (не тестовые) приложения не имеют доступа к инструментарию.

https://stackoverflow.com/a/29419540/1999084

person Allen Hair    schedule 04.03.2016