Szukaj…


Składnia

  • Instrumentacja getInstrumentation ()
  • UIDevice UiDevice.getInstance (oprzyrządowanie oprzyrządowania)
  • 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 ()

Uwagi

UIAutomator jest szczególnie dobry do testowania historii użytkowników. Występują problemy, jeśli elementy widoku nie mają unikalnego identyfikatora zasobu ani opisu treści . W większości przypadków istnieje sposób na ukończenie testu, co zajmuje dużo czasu. Jeśli możesz wpłynąć na kod swojej aplikacji, UIAutomator może być Twoim narzędziem testowym.

Przygotuj projekt i napisz pierwszy test UIAutomator

Dodaj wymagane biblioteki do sekcji zależności w build.gradle modułu 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'
}

⚠ Pamiętaj, że oczywiście wersje mogą się różnić w międzyczasie.

Po tej synchronizacji ze zmianami.

Następnie dodaj nową klasę Java do folderu 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();
  }
}

Poprzez kliknięcie prawym przyciskiem myszy zakładkę klasy i „Uruchom” InterAppTest wykonuje ten test.

Pisanie bardziej złożonych testów za pomocą UIAutomatorViewer

Aby umożliwić pisanie bardziej złożonych testów interfejsu użytkownika, potrzebny jest UIAutomatorViewer . Narzędzie znajdujące się w / tools / wykonuje zrzut ekranu na pełnym ekranie wraz z układami aktualnie wyświetlanych widoków. Zobacz następne zdjęcie, aby dowiedzieć się, co pokazano:

wprowadź opis zdjęcia tutaj

Do testów interfejsu użytkownika szukamy identyfikatora zasobu, opisu treści lub czegoś innego, aby zidentyfikować widok i użyć go w naszych testach.

Przeglądarka uiautomatorview jest wykonywana przez terminal.

Jeśli teraz chcemy na przykład kliknąć przycisk aplikacji, a następnie otworzyć aplikację i przesunąć palcem, tak może wyglądać metoda testowa:

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)
}

Tworzenie zestawu testów testów UIAutomator

Łączenie testów UIAutomator z zestawem testów jest szybkie:

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 {}

Wykonaj podobnie jak pojedynczy test, klikając prawym przyciskiem myszy i uruchom pakiet.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow