Поиск…


Синтаксис

  • Инструментарий getInstrumentation ()
  • UIDevice UiDevice.getInstance (контрольно-измерительная аппаратура)
  • boolean UIDevice.pressHome ()
  • boolean UIDevice.pressBack ()
  • boolean UIDevice.pressRecentApps ()
  • void UIDevice.wakeUp ()
  • boolean UIDevice.swipe (int startX, int startY, int endX, int endY, int steps)
  • boolean UIDevice.drag (int startX, int startY, int endX, int endY, int steps)
  • UIObject2 UIDevice.findObject (By.desc (String contentDesc))
  • boolean UIObject2.click ()

замечания

UIAutomator особенно хороши для тестирования пользовательских историй. У вас возникают проблемы, если элементы представления не имеют ни уникального идентификатора ресурса, ни контента-desc . В большинстве случаев есть способ закончить тест в любом случае, что занимает много времени. Если вы можете влиять на код своего приложения, UIAutomator может быть вашим инструментом тестирования.

Подготовьте свой проект и напишите первый тест UIAutomator

Добавьте необходимые библиотеки в раздел зависимостей build.gradle вашего Android:

android {
...
  defaultConfig {
    ...
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  }
}

dependencies {
  ...
  androidTestCompile 'com.android.support.test:runner:0.5'
  androidTestCompile 'com.android.support.test:rules:0.5'
  androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
  androidTestCompile 'com.android.support:support-annotations:23.4.0'
}

⚠ Обратите внимание, что, конечно, версии могут отличаться в среднем времени.

После этой синхронизации с изменениями.

Затем добавьте новый класс Java внутри папки androidTest:

public class InterAppTest extends InstrumentationTestCase {

  private UiDevice device;

  @Override
  public void setUp() throws Exception {
     device = UiDevice.getInstance(getInstrumentation());
  }

  public void testPressHome() throws Exception {
    device.pressHome();
  }
}

Сделав правый щелчок на вкладке класса и «Запустить« InterAppTest », выполняется этот тест.

Написание более сложных тестов с использованием UIAutomatorViewer

Чтобы разрешить писать более сложные UI-тесты, необходим UIAutomatorViewer . Инструмент, расположенный в / tools /, делает полноэкранный снимок экрана, включая макеты отображаемых в настоящее время видов. См. Последующую картинку, чтобы получить представление о том, что показано:

введите описание изображения здесь

Для тестов UI мы ищем идентификатор ресурса , контент-desc или что-то еще, чтобы идентифицировать представление и использовать его в наших тестах.

Uiautomatorviewer выполняется через терминал.

Если мы сейчас, например, хотим нажать кнопку «Приложения», а затем открыть какое-то приложение и проведите по экрану, вот как выглядит метод тестирования:

public void testOpenMyApp() throws Exception {
    // wake up your device
    device.wakeUp();

    // switch to launcher (hide the previous application, if some is opened)
    device.pressHome();

    // enter applications menu (timeout=200ms)
    device.wait(Until.hasObject(By.desc(("Apps"))), 200);
    UiObject2 appsButton = device.findObject(By.desc(("Apps")));
    assertNotNull(appsButton);
    appsButton.click();

    // enter some application (timeout=200ms)
    device.wait(Until.hasObject(By.desc(("MyApplication"))), 200);
    UiObject2 someAppIcon = device.findObject(By.desc(("MyApplication")));
    assertNotNull(someAppIcon);
    someAppIcon.click();

    // do a swipe (steps=20 is 0.1 sec.)
    device.swipe(200, 1200, 1300, 1200, 20);
    assertTrue(isSomeConditionTrue)
}

Создание тестового набора тестов UIAutomator

Сведение тестов UIAutomator вместе с набором тестов - это быстро:

package de.androidtest.myapplication;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({InterAppTest1.class, InterAppTest2.class})
public class AppTestSuite {}

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



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow