Тесты Android не выполняются

Я создал тестовый проект с точно таким же кодом, как показано здесь:

http://developer.android.com/tools/testing/testing_ui.html

Я загрузил файл jar на виртуальное устройство Android, и теперь я готов запустить тесты. Но я всегда получаю этот вывод на консоли:

INSTRUMENTATION_STATUS: поток=

Результаты теста для WatcherResultPrinter=

Время: 0,0

ОК (0 тестов)

INSTRUMENTATION_STATUS_CODE: -1


Я также создал простой тест со следующим кодом:

public void FailedTest() throws UiObjectNotFoundException {
    assertTrue("This test was executed", false);
}

В случае, если что-то не так с кодом, использующим элементы пользовательского интерфейса.

Имя пакета — Tests, а имя класса — Login, поэтому я запускаю следующую команду:

adb shell uiautomator runtest TestProject.jar -c Tests.Login

Изменить

Когда я запускаю его на реальном устройстве, я получаю:

uiautomator: разрешение запрещено


person chaliasos    schedule 12.04.2013    source источник


Ответы (1)


В качестве первого шага вы можете изменить имя тестового метода, чтобы оно соответствовало стандартному соглашению, используемому в jUnit 3, т.е. public void testWhatever() { ... } первые 4 буквы имени должны быть «тест» в нижнем регистре, подпись является общедоступной недействительной, а метод не не принимать никаких параметров.

Точно так же вы можете изменить имя пакета на более стандартное соглашение нижнего регистра, например. org.example.tests Если ваш файл называется Tests.java (и класс также называется Tests), вы сможете вызвать его следующим образом:

adb shell uiautomator runtest Tests.jar -c com.example.tests.Tests

Если это не поможет, не могли бы вы пересмотреть вопрос, включив в него весь код из файла Tests.java?

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

Я буду следить за uiautomator: permission denied отдельно. Тесты UI Automator выполняются на реальных устройствах. Им не нужно, чтобы устройство было рутировано. Я запускаю их на стандартных устройствах Android 4.2.x.

person JulianHarty    schedule 12.04.2013
comment
Когда я изменил пакет и имя метода тестирования, тест был выполнен. Спасибо большое. - person chaliasos; 12.04.2013
comment
Мое устройство не рутировано. Я также включил отладку по usb. Возможно, тогда это андроидная версия (пока что пробовал только на 2.3.х). Я попробую на Android 4. Спасибо за помощь. - person chaliasos; 13.04.2013
comment
Да, насколько я знаю, вам нужен Android 4.1 или более поздней версии, и чтобы сэкономить ваше время и нервы, я просто рекомендую вам использовать устройство с 4.2.1 или 4.2.2 (но в 4.2.2 есть ошибка, связанная с прокруткой, которую я сообщил Google). - person JulianHarty; 13.04.2013
comment
Я пробовал на Android 4.0.x и получаю ошибку /system/bin/sh: uiautomator: not found. На Android 4.1.3 я получаю исключение при выполнении теста NoSuchMethodError: UiScrollable.setAsHorizontalList. Возможно, мне нужно запускать их только на виртуальном устройстве :) - person chaliasos; 15.04.2013
comment
Нет, нет, нет :) дело в следующем: UI Automator появился с 4.1. Однако общее впечатление от моих и других исследований состоит в том, что реализация 4.1 либо неполная, либо сломана. 4.2 имеет разумную реализацию и должен нормально работать на устройствах с установленной версией 4.2. Но, я обнаружил ошибку в 4.2.2, где нарушается автоматическая прокрутка. Вот сообщение в блоге, в котором я написал о своем опыте и обходном пути для ошибки прокрутки blog.bettersoftwaretesting.com/? р=84 - person JulianHarty; 15.04.2013