You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Testy przeprowadzane w `UI Automator` pozwalają na weryfikację zachowania testowanej w aplikacji w interakcjach z innymi aplikacjami lub komponentami systemu. Przebiegają wg podobnego scenariusza co testy w `Espresso`, tzn. znajdowany jest widok, wykonywane są akcje i finalnie następuje sprawdzenie poprawności oczekiwanego stanu. Na wstępie jednak trzeba uzyskać dostęp do testowanego urządzenia poprzez instancję `UiDevice` dzięki czemu możliwe jest znajdowanie i operowanie na widokach oraz manipulowanie stanem urządzania. Dobrą praktyką jest rozpoczynanie testów od głównego ekranu systemowego.
176
+
177
+
{% highlight kotlin %}
178
+
@RunWith(AndroidJUnit4::class)
179
+
class UIAutomatorTest {
180
+
181
+
private val APP_PACKAGE = "pl.androidcode"
182
+
private val SMS_APP_PACKAGE = "com.google.android.apps.messaging"
Aby otrzymać dostęp do komponentów widoków aplikacji (widocznych na ekranie) należy uzyskać instancję typu `UiObject` wywołując metodę `findObject` na obiekcie `UiDevice` przekazując jako argument odpowiedni `UiSelector` konstruowany na podstawie m.in. id (`resourceId`), zawartości (`text`) czy nazwy klasy obiektu widoku (`className`). O ile komplet informacji nt widoków testowanej aplikacji dostępny jest z poziomu kodu to w przypadku zewnętrznych aplikacji i komponentów systemu już niekoniecznie. W takim przypadku można posłużyć się narzędziem `UI Automator Viewer` dostępnym w `Android Studio`. Akcje jakie można wykonać to m.in. `click`, `dragTo`, `setText`, `swipeUp`.
209
+
210
+
{% highlight kotlin %}
211
+
@Test
212
+
fun verifyTypedMessageFromEditText() {
213
+
//find views by some selectors (known from you app code)
214
+
val editText = device.findObject(UiSelector().resourceId("${APP_PACKAGE}:id/editTextName"))
215
+
val buttonAction = device.findObject(UiSelector().text("ACTION").className("android.widget.Button"))
216
+
val buttonSms = device.findObject(UiSelector().text("SMS").className("android.widget.Button"))
0 commit comments