Suche…


Syntax

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

Bemerkungen

UIAutomator eignet sich besonders zum Testen von User Storys. Sie haben Probleme, wenn Ansichtselemente weder eine eindeutige Ressourcen-ID noch eine Inhaltsangabe haben . In den meisten Fällen gibt es eine Möglichkeit, den Test trotzdem abzuschließen, was sehr viel Zeit in Anspruch nimmt. Wenn Sie den Code Ihrer App beeinflussen können, ist UIAutomator möglicherweise Ihr Testwerkzeug.

Bereiten Sie Ihr Projekt vor und schreiben Sie den ersten UIAutomator-Test

Fügen Sie die erforderlichen Bibliotheken in den Abhängigkeitsbereich des build.gradle Ihres Android-Moduls ein:

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

⚠ Beachten Sie, dass sich die Versionen natürlich in der Zwischenzeit unterscheiden können.

Danach mit den Änderungen synchronisieren.

Fügen Sie dann eine neue Java-Klasse im Ordner androidTest hinzu:

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

Durch einen Rechtsklick auf die Klassenregisterkarte und auf "Ausführen" führt InterAppTest diesen Test aus.

Komplexere Tests mit dem UIAutomatorViewer schreiben

Um komplexere UI-Tests erstellen zu können, ist der UIAutomatorViewer erforderlich. Das Tool unter / tools / erstellt einen Vollbild-Screenshot mit den Layouts der aktuell angezeigten Ansichten. Sehen Sie sich das folgende Bild an, um eine Vorstellung davon zu bekommen, was gezeigt wird:

Geben Sie hier die Bildbeschreibung ein

Für die UI-Tests suchen wir nach resource-id , content-desc oder etwas anderem, um eine Ansicht zu identifizieren und in unseren Tests zu verwenden.

Der uiautomatorviewer wird über das Terminal ausgeführt.

Wenn wir jetzt zum Beispiel auf die Schaltfläche "Anwendungen" klicken und dann eine App öffnen und herumwischen möchten, kann die Testmethode folgendermaßen aussehen:

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

Erstellen einer Testsuite von UIAutomator-Tests

UIAutomator-Tests in einer Test-Suite zusammenzufassen, ist eine schnelle Sache:

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

Führen Sie den Test wie bei einem einzelnen Test aus, indem Sie auf die rechte Maustaste klicken und die Suite ausführen.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow