Android
Testowanie interfejsu użytkownika między aplikacjami za pomocą UIAutomator
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:
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.