Android
Inter-app UI-test med UIAutomator
Sök…
Syntax
- Instrumentation getInstrumentation ()
- UIDevice UiDevice.getInstance (Instrumentation instrumentation)
- boolean UIDevice.pressHome ()
- boolean UIDevice.pressBack ()
- boolean UIDevice.pressRecentApps ()
- void UIDevice.wakeUp ()
- boolean UIDevice.swipe (int startX, int startY, int endX, int endY, int steg)
- boolean UIDevice.drag (int startX, int startY, int endX, int endY, int steg)
- UIObject2 UIDevice.findObject (By.desc (String contentDesc))
- boolean UIObject2.click ()
Anmärkningar
UIAutomator är särskilt bra för att testa användarberättelser. Du stöter på problem om visningselement varken har ett unikt resurs-ID eller innehåll-desc . I de flesta fall finns det ett sätt att slutföra testet ändå, vad som tar mycket tid. Om du kan påverka koden för din app kan UIAutomator vara ditt testverktyg.
Förbered ditt projekt och skriv det första UIAutomator-testet
Lägg till nödvändiga bibliotek i beroendeavsnittet i din Android-moduls build.gradle:
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'
}
⚠ Observera att naturligtvis versionerna kan variera under medeltiden.
Efter den här synkroniseringen med ändringarna.
Lägg sedan till en ny Java-klass i mappen 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();
}
}
Genom att högerklicka på klassfliken och på "Kör" InterAppTest kör detta test.
Skriva mer komplexa test med UIAutomatorViewer
För att möjliggöra skrivning av mer komplexa UI-test behövs UIAutomatorViewer . Verktyget som finns på / tools / gör en skärmbild på full skärm inklusive layouterna för de visningar som för närvarande visas. Se bilden som följer för att få en uppfattning om vad som visas:
För UI-testerna letar vi efter resurs-id , content-desc eller något annat för att identifiera en vy och använda den i våra tester.
Uiautomatorviewer körs via terminal.
Om vi till exempel nu vill klicka på applikationsknappen och sedan öppna en app och svepa runt, så kan testmetoden se ut:
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)
}
Skapa en testsvit med UIAutomatortest
Att sätta UIAutomator-tester ihop till en testsvit är en snabb sak:
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 {}
Kör liknande ett enda test genom att klicka höger och kör sviten.