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:

ange bildbeskrivning här

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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow