Android
Test dell'interfaccia utente Inter-App con UIAutomator
Ricerca…
Sintassi
- Strumentazione getInstrumentation ()
- UIDevice UiDevice.getInstance (Strumentazione di strumentazione)
- booleano UIDevice.pressHome ()
- booleano UIDevice.pressBack ()
- booleano UIDevice.pressRecentApps ()
- void UIDevice.wakeUp ()
- booleano UIDevice.swipe (int startX, int startY, int endX, int endY, int step)
- booleano UIDevice.drag (int startX, int startY, int endX, int endY, int step)
- UIObject2 UIDevice.findObject (By.desc (String contentDesc))
- booleano UIObject2.click ()
Osservazioni
UIAutomator è particolarmente utile per testare le storie degli utenti. Si verificano problemi se gli elementi di visualizzazione non hanno né un ID risorsa univoco né un contenuto-desc . Nella maggior parte dei casi c'è comunque un modo per completare il test, ciò richiede molto tempo. Se puoi influenzare il codice della tua app, UIAutomator potrebbe essere il tuo strumento di test.
Prepara il tuo progetto e scrivi il primo test UIAutomator
Aggiungi le librerie richieste nella sezione delle dipendenze del build.gradle del tuo modulo 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'
}
⚠ Si noti che, naturalmente, le versioni potrebbero differire nel frattempo.
Dopo questa sincronizzazione con le modifiche.
Quindi aggiungi una nuova classe Java nella cartella 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();
}
}
Facendo un clic destro sulla scheda della classe e su "Esegui" InterAppTest "esegue questo test.
Scrivere test più complessi usando UIAutomatorViewer
Per abilitare la scrittura di più complessi test dell'interfaccia utente è necessario UIAutomatorViewer . Lo strumento situato in / tools / crea uno screenshot a schermo intero che include i layout delle viste attualmente visualizzate. Guarda l'immagine successiva per avere un'idea di cosa viene mostrato:
Per i test dell'interfaccia utente cerchiamo id risorsa , content-desc o qualcos'altro per identificare una vista e utilizzarla nei nostri test.
Il visualizzatore uiautomator viene eseguito tramite terminale.
Se ora, ad esempio, vogliamo fare clic sul pulsante delle applicazioni e quindi aprire alcune app e scorrere, ecco come può apparire il metodo di prova:
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)
}
Creazione di una suite di test dei test di UIAutomator
Mettere insieme i test di UIAutomator in una suite di test è una cosa rapida:
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 {}
Esegui simile a un singolo test facendo clic su destra ed esegui la suite.