Testowanie w Android Studio

Android Studio ułatwia testowanie. Zawiera wiele funkcji, które upraszczają tworzenie, przeprowadzanie i analizowanie testów. Możesz skonfigurować testy, które będą uruchamiane na komputerze lokalnym, lub testy z instrumentacją, które będą uruchamiane na urządzeniu. Możesz łatwo przeprowadzić pojedynczy test lub określoną grupę testów na co najmniej 1 urządzeniu. Wyniki testu są wyświetlane bezpośrednio w Android Studio.

Rysunek 1. Android Studio z omówieniem wyników testu.

Z tego artykułu dowiesz się, jak zarządzać testami w Android Studio. Informacje o tym, jak pisać zautomatyzowane testy na Androida, znajdziesz w artykule Testowanie aplikacji na Androida.

Rodzaje testów i lokalizacje

Lokalizacja testów zależy od ich typu. Projekty na Androida mają domyślne katalogi kodu źródłowego na potrzeby lokalnych testów jednostkowych i testów instrumentalnych.

Lokalne testy jednostkowe znajdują się w katalogu module-name/src/test/java/. Są to testy, które są uruchamiane na lokalnej maszynie wirtualnej Javy (JVM) na Twoim komputerze. Używaj tych testów, aby zminimalizować czas wykonywania, gdy testy nie mają zależności od platformy Android lub gdy możesz utworzyć obiekty zastępcze dla zależności od platformy Android. Więcej informacji o pisaniu lokalnych testów jednostkowych znajdziesz w artykule Tworzenie lokalnych testów jednostkowych.

Testy z instrumentacją znajdują się w katalogu $module-name/src/androidTest/java/. Testy te są przeprowadzane na urządzeniu lub w emulatorze. Mają one dostęp do interfejsów API, które dają dostęp do informacji, takich jak klasa Context w testowanej aplikacji, i umożliwiają sterowanie testowaną aplikacją z poziomu kodu testu.Instrumentation Testy z instrumentacją są wbudowane w osobny plik APK, więc mają własny plik AndroidManifest.xml. Ten plik jest generowany automatycznie, ale możesz utworzyć własną wersję w $module-name/src/androidTest/AndroidManifest.xml, która zostanie scalona z wygenerowanym plikiem manifestu. Używaj testów z instrumentacją, gdy piszesz testy integracyjne i funkcjonalne interfejsu, aby zautomatyzować interakcję użytkownika, lub gdy testy mają zależności od Androida, dla których nie możesz utworzyć obiektów zastępczych. Więcej informacji o pisaniu testów z instrumentacją znajdziesz w artykułach Tworzenie testów z instrumentacjąAutomatyzacja testów interfejsu.

Możesz umieścić testy w katalogach specyficznych dla wariantów kompilacji, aby testować tylko określone warianty kompilacji. Możesz na przykład umieścić lokalne testy jednostkowe w $module-name/src/testMyFlavor/java/, aby były one kierowane na aplikację utworzoną na podstawie kodu źródłowego tego wariantu. Więcej informacji o tworzeniu takich testów dostosowanych do potrzeb znajdziesz w artykule Tworzenie testu z instrumentacją dla wariantu kompilacji.

Gdy utworzysz nowy projekt lub dodasz moduł aplikacji, Android Studio utworzy wymienione wcześniej zestawy źródeł testowych i w każdym z nich umieści przykładowy plik testowy. Możesz je zobaczyć w oknie Projekt, jak pokazano na rysunku 2.

Rysunek 2. Testy (1) z instrumentacją i testy (2) lokalnej maszyny JVM w projekcie są widoczne w widoku Projekt (po lewej) lub Android (po prawej).

Tworzenie nowych testów

Nowy test dla konkretnej klasy lub metody możesz dodać bezpośrednio z kodu źródłowego, wykonując te czynności:

  1. Otwórz plik źródłowy zawierający kod, który chcesz przetestować.
  2. Umieść kursor w nazwie klasy lub metody, którą chcesz przetestować, i naciśnij Control+Shift+T (Command+Shift+T w systemie macOS).
  3. W wyskakującym okienku kliknij Utwórz nowy test…
  4. W oknie Create Test (Utwórz test) wybierz JUnit4, edytuj pola i metody, które chcesz wygenerować, a następnie kliknij OK.
  5. W oknie Wybierz katalog docelowy kliknij zestaw źródeł odpowiadający typowi testu, który chcesz utworzyć: androidTest w przypadku testu instrumentalnego lub test w przypadku lokalnego testu jednostkowego. Następnie kliknij OK.

Możesz też utworzyć ogólny plik testowy w odpowiednim zestawie źródeł testowych w ten sposób:

  1. W oknie Projekt po lewej stronie kliknij menu i wybierz widok Android.
  2. Kliknij prawym przyciskiem myszy katalog java i wybierz New > Java Class lub New > Kotlin Class/File. Możesz też wybrać katalog java i użyć skrótu Ctrl+N (Command+N w systemie macOS).
  3. W oknie Wybierz katalog docelowy kliknij zestaw źródeł odpowiadający typowi testu, który chcesz utworzyć: androidTest w przypadku testu instrumentalnego lub test w przypadku lokalnego testu jednostkowego. Następnie kliknij OK.
  4. Nazwij plik, a następnie kliknij OK.

Jeśli po dodaniu testu aplikacja nie zostanie skompilowana, sprawdź, czy masz prawidłowo skonfigurowane zależności biblioteki testowej. Prawidłowe zależności znajdziesz w artykułach Tworzenie testów lokalnychTworzenie testów z instrumentacją.

Przeprowadzanie testów

Zanim uruchomisz jakiekolwiek testy, upewnij się, że projekt jest w pełni zsynchronizowany z Gradle. W tym celu kliknij Synchronizuj projekt na pasku narzędzi. Możesz przeprowadzać testy o różnym poziomie szczegółowości:

  • Aby uruchomić wszystkie testy w katalogu lub pliku, otwórz okno Projekt i wykonaj jedną z tych czynności:

    • Kliknij prawym przyciskiem myszy katalog lub plik i wybierz Uruchom .
    • Wybierz katalog lub plik i użyj skrótu Control+Shift+R.
  • Aby uruchomić wszystkie testy w klasie lub konkretną metodę, otwórz plik testu w edytorze kodu i wykonaj jedną z tych czynności:

    • Kliknij ikonę Uruchom test  w marginesie.
    • Kliknij prawym przyciskiem myszy klasę lub metodę testową i kliknij Uruchom .
    • Wybierz klasę lub metodę testu i użyj skrótu Control+Shift+R.

Testy z instrumentacją będą uruchamiane na urządzeniu fizycznym lub w emulatorze. Więcej informacji o konfigurowaniu urządzeń fizycznych znajdziesz w artykule Uruchamianie aplikacji na urządzeniu sprzętowym. Więcej informacji o konfigurowaniu emulatorów znajdziesz w artykule Uruchamianie aplikacji w emulatorze Androida.

Konfigurowanie testu

Domyślnie testy są uruchamiane przy użyciu domyślnej konfiguracji uruchamiania Androida Studio. Jeśli chcesz zmienić niektóre ustawienia uruchamiania, takie jak narzędzie do instrumentacji i opcje wdrażania, możesz edytować konfigurację uruchamiania w oknie Run/Debug Configurations (kliknij Run > Edit Configurations).

Ujednolicony uruchamiający testy Gradle

Wtyczka Androida do obsługi Gradle w wersji 7.1.0 oraz Android Studio Bumblebee i nowsze wersje korzystają z własnej implementacji narzędzia do uruchamiania testów instrumentalnych na Androidzie, aby uruchamiać testy instrumentalne. Dzięki użyciu tego samego narzędzia do uruchamiania testów wyniki powinny być spójne niezależnie od tego, czy testy są uruchamiane za pomocą AGP z wiersza poleceń, np. na serwerze ciągłej integracji, czy z Androida Studio.

Rysunek 3. Ujednolicony uruchamiający testy Gradle.

W poprzednich wersjach Androida Studio używany jest testowy program uruchamiający IntelliJ Android zamiast testowego programu uruchamiającego Gradle. Jeśli nie korzystasz z najnowszej wersji Androida Studio, w zależności od tego, czy uruchamiasz testy w Androidzie Studio, czy w wierszu poleceń za pomocą wtyczki Gradle, możesz zobaczyć różne wyniki testów, np. testy mogą przechodzić w jednym programie uruchamiającym, a w innym nie.

Rysunek 4. Oddzielne narzędzia do uruchamiania testów w starszych wersjach Android Studio.

Jeśli w projekcie masz już zapisane konfiguracje testów z instrumentacją, będą one używać Gradle do przeprowadzania testów na podłączonym urządzeniu. Nową konfigurację testu z instrumentacją możesz utworzyć za pomocą działania w marginesie obok klasy lub metody testu, jak pokazano poniżej.

Rysunek 5. Uruchamianie testów z poziomu działania na marginesie.

Podczas przeprowadzania testów z instrumentacją możesz sprawdzić, czy Android Studio używa narzędzia do uruchamiania testów Gradle, analizując dane wyjściowe testu w macierzy testów pod kątem danych wyjściowych zadania Gradle.

Uruchamianie na kilku urządzeniach równolegle

Testy instrumentowane są domyślnie przeprowadzane na 1 urządzeniu fizycznym lub emulatorze. Jeśli chcesz sprawdzić, jak testy działają na większej liczbie urządzeń, możesz wybrać więcej urządzeń, wykonując te czynności:

  1. Przed uruchomieniem testów otwórz menu urządzenia docelowego i kliknij Wybierz wiele urządzeń….

    Rysunek 6. Kliknij menu Wiele urządzeń.

  2. Wybierz urządzenia i kliknij OK.

  3. Sprawdź, czy w menu docelowym jest wyświetlany tekst Wiele urządzeń, a następnie kliknij Uruchom .

  4. W oknie narzędzia Test Matrix (Macierz testowa) wyświetlają się wyniki testów dla każdej wybranej konfiguracji urządzenia.

    Rysunek 7. Wyniki testu w oknie narzędzia Test Matrix.

  5. Możesz kliknąć konkretny test, aby sprawdzić wynik w panelu wyjściowym. Możesz też sortować testy, klikając różne kolumny.

Uruchamianie w Laboratorium Firebase

Korzystając z Laboratorium Firebase, możesz jednocześnie testować aplikację na wielu popularnych urządzeniach z Androidem i w różnych konfiguracjach (różne kombinacje ustawień regionalnych, orientacji, rozmiaru ekranu i wersji platformy). Testy te są przeprowadzane na urządzeniach fizycznych i wirtualnych w zdalnych centrach danych Google. Wyniki testu zawierają dzienniki testów i szczegóły wszelkich awarii aplikacji.

Aby zacząć korzystać z Laboratorium Firebase, musisz wykonać te czynności:

  1. Utwórz konto Google, jeśli jeszcze go nie masz.
  2. W konsoli Firebase kliknij Utwórz nowy projekt.

Android Studio udostępnia zintegrowane narzędzia, które pozwalają skonfigurować sposób wdrażania testów w Laboratorium Firebase. Po utworzeniu projektu Firebase możesz utworzyć konfigurację testu i uruchomić testy:

  1. W menu głównym kliknij Uruchom > Edytuj konfiguracje.
  2. Kliknij Add New Configuration (Dodaj nową konfigurację)  i wybierz Android Instrumented Tests (Testy z instrumentacją na Androidzie).
  3. Wpisz lub wybierz szczegóły testu, takie jak nazwa testu, typ modułu, typ testu i klasa testu.
  4. W menu Cel w sekcji Opcje celu wdrożenia wybierz Macierz urządzeń w Firebase Test Lab.
  5. Jeśli nie jesteś zalogowany(-a), kliknij Zaloguj się przez Google i zezwalaj Androidowi Studio na dostęp do Twojego konta.
  6. Obok pozycji Projekt w Cloud wybierz z listy projekt Firebase.
  7. Obok pozycji Konfiguracja macierzy wybierz jedną z domyślnych konfiguracji w menu lub utwórz własną, klikając Otwórz okno . Możesz wybrać co najmniej 1 urządzenie, wersję Androida, język i orientację ekranu, na których chcesz przetestować aplikację. Laboratorium Firebase przetestuje aplikację pod kątem każdej kombinacji wybranych przez Ciebie opcji podczas generowania wyników testu.
  8. Aby zamknąć okno Run/Debug Configurations (Konfiguracje uruchamiania/debugowania), kliknij OK.
  9. Uruchom testy, klikając Uruchom .

Rysunek 8. Tworzenie konfiguracji testu w Laboratorium Firebase.

Analizowanie wyników testu

Gdy Laboratorium Firebase zakończy przeprowadzanie testów, otworzy się okno Uruchom, w którym wyświetlą się wyniki (rysunek 9). Aby wyświetlić wszystkie wykonane testy, konieczne może być kliknięcie Pokaż zakończone .

Rysunek 9. Wyniki testów z użyciem instrumentacji przeprowadzonych w Laboratorium Firebase.

Testy możesz też analizować w internecie, klikając link wyświetlany na początku dziennika wykonania testu w oknie Uruchom.

Wyświetlanie zakresu testu

Narzędzie do sprawdzania pokrycia testami jest dostępne w przypadku lokalnych testów jednostkowych. Umożliwia śledzenie odsetka i obszarów kodu aplikacji, które zostały objęte testami jednostkowymi. Użyj narzędzia do testowania pokrycia, aby sprawdzić, czy elementy, klasy, metody i wiersze kodu, z których składa się Twoja aplikacja, zostały odpowiednio przetestowane.

Aby uruchomić testy z informacjami o pokryciu, wykonaj te same czynności co w przypadku uruchamiania testów. Zamiast klikać Uruchom , kliknij Uruchom test o nazwie „test-name” z informacjami o pokryciu . W oknie Project (Projekt) ta opcja może być ukryta za More Run/Debug (Więcej opcji uruchamiania/debugowania). Ustawienia pokrycia możesz też skonfigurować w oknie Run/Debug Configurations (Konfiguracje uruchamiania/debugowania) na karcie Code Coverage (Pokrycie kodu).

Rysunek 10. Procent pokrycia kodu w aplikacji.

Wyświetlanie wyników testu

Gdy uruchomisz co najmniej 1 test w Android Studio, wyniki pojawią się w oknie Uruchom. Ilustracja 11 przedstawia udany test.

Rysunek 11. Wyniki testu pojawią się w oknie Uruchom.

W oknie Uruchom po lewej stronie wyświetlają się testy w widoku drzewa, a po prawej stronie w panelu wyjściowym – wyniki i komunikaty dotyczące bieżącego pakietu testów. Aby zarządzać wynikami testu, używaj pasków narzędzi, menu kontekstowych i ikon stanu w ten sposób:

  1. Użyj paska narzędzi uruchamiania, aby ponownie uruchomić bieżący test, zatrzymać go, ponownie uruchomić testy, które się nie powiodły (nie jest to widoczne, ponieważ jest dostępne tylko w przypadku testów jednostkowych), wstrzymać dane wyjściowe i zrzucać wątki.
  2. Użyj paska narzędzi testowych, aby filtrować i sortować wyniki testów. Możesz też rozwijać i zwijać węzły, wyświetlać pokrycie testami oraz importować i eksportować wyniki testów.
  3. Kliknij menu kontekstowe, aby śledzić przebieg testu, wyświetlać statystyki w tekście, przewijać ślad stosu, otwierać kod źródłowy w miejscu wystąpienia wyjątku, automatycznie przewijać do źródła i wybierać pierwszy nieudany test po zakończeniu testu.
  4. Ikony stanu testu wskazują, czy test zawiera błąd, został zignorowany, zakończył się niepowodzeniem, jest w toku, zakończył się powodzeniem, został wstrzymany, zakończył się przedwcześnie czy nie został uruchomiony.
  5. Kliknij prawym przyciskiem myszy wiersz w widoku drzewa, aby wyświetlić menu kontekstowe, które umożliwia uruchamianie testów w trybie debugowania, otwieranie pliku kodu źródłowego testu lub przechodzenie do wiersza w testowanym kodzie źródłowym.

Analizowanie niepowodzeń testów

Jeśli co najmniej jeden test zakończy się niepowodzeniem, w oknie wyników pojawi się znak ostrzegawczy i liczba niepowodzeń (np. „Nieudane testy: 1”):

Rysunek 12. Szczegóły nieudanego testu w okienku wyjściowym.

Gdy w widoku drzewa po lewej stronie klikniesz test, który się nie powiódł, w panelu wyjściowym po prawej stronie wyświetlą się szczegóły tego testu. Obok wartości rzeczywistej wyświetla wartość oczekiwaną, dzięki czemu możesz je porównać. Kliknięcie linku Kliknij, aby zobaczyć różnicę spowoduje otwarcie przeglądarki różnic, w której możesz zobaczyć wyniki obok siebie.

Więcej informacji

Na tej stronie znajdziesz podstawowe czynności, które należy wykonać podczas tworzenia i przeprowadzania pierwszego testu w Android Studio. Możesz też uruchamiać testy z poziomu wiersza poleceń. Możesz też zapoznać się z dokumentacją IntelliJ dotyczącą testowania. Więcej informacji o konfigurowaniu testów podczas tworzenia większego pakietu testów znajdziesz w artykule Zaawansowana konfiguracja testów.