Zoeken…


Syntaxis

  • Instrumentation getInstrumentation ()
  • UIDevice UiDevice.getInstance (Instrumentatie-instrumentatie)
  • boolean UIDevice.pressHome ()
  • boolean UIDevice.pressBack ()
  • boolean UIDevice.pressRecentApps ()
  • void UIDevice.wakeUp ()
  • boolean UIDevice.swipe (int startX, int startY, int endX, int endY, int stappen)
  • boolean UIDevice.drag (int startX, int startY, int endX, int endY, int stappen)
  • UIObject2 UIDevice.findObject (By.desc (String contentDesc))
  • boolean UIObject2.click ()

Opmerkingen

UIAutomator is vooral goed voor het testen van gebruikersverhalen. U ondervindt problemen als weergave-elementen noch een unieke resource-id, noch content-desc hebben . In de meeste gevallen is er toch een manier om de test uit te voeren, wat veel tijd kost. Als u de code van uw app kunt beïnvloeden, kan UIAutomator uw testtool zijn.

Bereid uw project voor en schrijf de eerste UIAutomator-test

Voeg de vereiste bibliotheken toe aan het gedeelte afhankelijkheden van de build.gradle van uw Android-module:

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

⚠ Merk op dat de versies natuurlijk in de tussentijd kunnen verschillen.

Na deze synchronisatie met de wijzigingen.

Voeg vervolgens een nieuwe Java-klasse toe in de map 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();
  }
}

Door met de rechtermuisknop op het klassetabblad te klikken en op "Uitvoeren" voert InterAppTest "deze test uit.

Meer complexe tests schrijven met de UIAutomatorViewer

Om complexere UI-tests te kunnen schrijven, is de UIAutomatorViewer nodig. De tool op / tools / maakt een screenshot op volledig scherm inclusief de lay-outs van de momenteel weergegeven weergaven. Zie de volgende afbeelding om een idee te krijgen van wat wordt getoond:

voer hier de afbeeldingsbeschrijving in

Voor de UI-tests zijn we op zoek naar resource-id , content-desc of iets anders om een weergave te identificeren en te gebruiken in onze tests.

De uiautomatorviewer wordt uitgevoerd via een terminal.

Als we nu bijvoorbeeld op de knop Toepassingen willen klikken en vervolgens een app openen en rondvegen, ziet de testmethode er zo uit:

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

Een testpakket met UIAutomator-tests maken

Het samenstellen van UIAutomator-tests in een testpakket is snel:

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

Voer hetzelfde uit als een enkele test door rechts te klikken en de suite uit te voeren.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow