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ą przeprowadzane na komputerze lokalnym, lub testy instrumentalne wykonywane na urządzeniu. Możesz łatwo przeprowadzić jeden lub określoną grupę testów na jednym bądź kilku urządzeniach. Wyniki testu są wyświetlane bezpośrednio w Android Studio.

Rysunek 1. Android Studio z podsumowaniem wyników testu.

Na tej stronie dowiesz się, jak zarządzać testami w Android Studio. Więcej informacji o pisaniu automatycznych testów na Androida znajdziesz w artykule Testowanie aplikacji na Androidzie.

Typy i lokalizacje testów

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

Testy jednostek lokalnych znajdują się tutaj: module-name/src/test/java/. Są to testy uruchamiane na lokalnej maszynie wirtualnej Java (JVM). Korzystaj z tych testów, aby skrócić czas wykonywania, gdy testy nie mają zależności od platformy Androida lub gdy możesz utworzyć podwójne wyniki testów dla zależności platformy Androida. Więcej informacji o pisaniu testów jednostkowych znajdziesz w artykule Tworzenie testów jednostek lokalnych.

Testy z instrumentami są dostępne tutaj: $module-name/src/androidTest/java/. Te testy będą przeprowadzane na urządzeniu sprzętowym lub w emulatorze. Mają one dostęp do interfejsów API Instrumentation, które dają dostęp do informacji, takich jak klasa Context, w testowanej aplikacji oraz do kontrolowania testowanej aplikacji z poziomu kodu testu. Testy z instrumentów są wbudowane w osobny plik APK, więc mają własny plik AndroidManifest.xml. Ten plik zostanie wygenerowany automatycznie, ale możesz utworzyć własną wersję pod adresem $module-name/src/androidTest/AndroidManifest.xml, która zostanie scalona z wygenerowanym plikiem manifestu. Używaj testów instrumentalnych podczas pisania integracji i testów funkcjonalnego interfejsu użytkownika w celu automatyzacji interakcji z użytkownikami lub gdy testy mają zależności Androida, dla których nie da się utworzyć podwójnej precyzji. Więcej informacji o pisaniu testów instrumentalnych znajdziesz w artykułach o tworzeniu testów instrumentowanych i automatyzowaniu testów interfejsu.

Testy możesz umieszczać w katalogach konkretnych wariantów kompilacji, aby testować tylko określone warianty. Możesz na przykład przeprowadzić testy jednostkowe w $module-name/src/testMyFlavor/java/, aby były one kierowane na aplikację utworzoną za pomocą kodu źródłowego tego rodzaju. Więcej informacji o tworzeniu dostosowanych testów znajdziesz w artykule o tworzeniu testu instrumentowanego dla wariantu kompilacji.

Gdy tworzysz nowy projekt lub dodajesz moduł aplikacji, Android Studio tworzy wymienione wcześniej zbiory źródeł testowych i w każdym z nich zawiera przykładowy plik testowy. Możesz je zobaczyć w oknie Projekt, tak jak na ilustracji 2.

Rysunek 2. Testy (1) instrumentowane i (2) lokalne testy JVM są widoczne w widoku Projekt (po lewej) lub Android (po prawej).

Tworzenie nowych testów

Możesz dodać nowy test dla określonej klasy lub metody bezpośrednio z jej 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óre chcesz przetestować, i naciśnij Control+Shift+T (Command+Shift+T w systemie macOS).
  3. W wyskakującym okienku kliknij Create New Test... (Utwórz nowy test).
  4. W oknie Utwórz test wybierz JUnit4, edytuj pola i metody, które chcesz wygenerować, i kliknij OK.
  5. W oknie Wybierz katalog docelowy kliknij zbiór źródłowy odpowiadający typowi testu, który chcesz utworzyć: androidTest do testu instruktażowego lub test do testu jednostki lokalnej. Następnie kliknij OK.

Możesz też utworzyć ogólny plik testowy w odpowiednim zestawie źródłowym w następujący 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 (Nowa > Klasa Java) lub New > Kotlin Class/File. Możesz też wybrać katalog java i użyć skrótu Control+N (Command+N w systemie macOS).
  3. W oknie Wybierz katalog docelowy kliknij zbiór źródłowy odpowiadający typowi testu, który chcesz utworzyć: androidTest do testu instruktażowego lub test do testu jednostki lokalnej. Następnie kliknij OK.
  4. Nazwij plik i kliknij OK.

Jeśli po dodaniu testu aplikacja nie kompiluje się, sprawdź, czy masz skonfigurowane odpowiednie zależności w bibliotece testowej. Odpowiednie zależności znajdziesz w sekcjach Tworzenie testów lokalnych i Tworzenie testów instrumentowanych.

Przeprowadzanie testów

Przed uruchomieniem testów upewnij się, że projekt jest w pełni zsynchronizowany z Gradle, klikając Synchronizuj projekt na pasku narzędzi. Testy możesz przeprowadzać na różnych poziomach szczegółowości:

  • Aby przeprowadzić wszystkie testy w katalogu lub pliku, otwórz okno projektu 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 przeprowadzić wszystkie testy w ramach klasy lub określonej metody, otwórz plik testowy w edytorze kodu i wykonaj jedną z tych czynności:

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

Testy z instrumentów będą przeprowadzane 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 przy użyciu emulatora Androida.

Konfigurowanie uruchomienia testowego

Domyślnie testy są przeprowadzane z użyciem domyślnej konfiguracji uruchamiania w Android Studio. Jeśli musisz zmienić niektóre ustawienia uruchamiania, takie jak narzędzie do uruchamiania instrumentacji i opcje wdrażania, możesz zmodyfikować konfigurację uruchomienia w oknie Uruchamianie/debugowanie (kliknij Uruchom > Edytuj konfiguracje).

Uruchamiający ujednolicony test Gradle

Wtyczka Androida do obsługi Gradle w wersji 7.1.0 oraz Android Studio Bumblebee i nowsze wersje do przeprowadzania testów instrumentalnych korzystają z własnej przez Gradle implementacji narzędzia do uruchamiania testów na Androida. Jeśli użyjesz tego samego mechanizmu uruchamiania testów, wyniki będą prawdopodobnie spójne niezależnie od tego, czy używasz interfejsu AGP z poziomu wiersza poleceń, np. na serwerze ciągłej integracji, czy z Androida Studio.

Rysunek 3. Uruchamiający ujednolicony test Gradle.

Poprzednie wersje Androida Studio używały instrumentowanego mechanizmu uruchamiania testów IntelliJ Android zamiast oprogramowanego przez Gradle programu uruchamiającego test. Jeśli więc nie używasz najnowszej wersji Android Studio, to w zależności od tego, czy przeprowadzasz testy w Android Studio, czy z poziomu wiersza poleceń przy użyciu wtyczki do Gradle, wyniki testu mogą się różnić, na przykład gdy testy zakończą się powodzeniem i zakończy się niepowodzeniem w innym.

Rysunek 4. Dyskretni testerzy w starszych wersjach Android Studio.

Jeśli w projekcie masz już zapisane konfiguracje testowe, użyją one Gradle do uruchamiania testów na połączonym urządzeniu. Możesz utworzyć nową instruowaną konfigurację testową, korzystając z działania rynku obok klasy lub metody testowej, jak pokazano poniżej.

Rysunek 5. Uruchamiaj testy z działania rynku.

Podczas testów instrumentalnych możesz sprawdzić, czy Android Studio używa narzędzia do uruchamiania testów Gradle, sprawdzając w matrycy testów wynik testu w przypadku zadania Gradle.

Działaj równolegle na wielu urządzeniach

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

  1. Przed przeprowadzeniem testów otwórz menu Urządzenie docelowe i kliknij Wybierz wiele urządzeń....

    Rysunek 6. Kliknij menu Wiele urządzeń.

  2. Wybierz odpowiednie urządzenia i kliknij OK.

  3. Upewnij się, że tekst w menu docelowym zmieni się na Wiele urządzeń, a potem kliknij Uruchom .

  4. Okno narzędzia Test Matrix zawiera 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 wyników. Testy możesz też sortować, klikając odpowiednie kolumny.

Uruchom w Laboratorium Firebase

Dzięki Laboratorium Firebase możesz jednocześnie testować swoją aplikację na wielu popularnych urządzeniach z Androidem i w konfiguracjach urządzeń (różnych kombinacji ustawień regionalnych, orientacji, rozmiaru ekranu i wersji platformy). Te testy są przeprowadzane na urządzeniach fizycznych i wirtualnych w odległych centrach danych Google. Wyniki testu zawierają logi testowe i szczegóły wszystkich błędów aplikacji.

Aby zacząć korzystać z Laboratorium Firebase:

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

Android Studio zawiera zintegrowane narzędzia umożliwiające skonfigurowanie sposobu wdrażania testów w Laboratorium Firebase. Po utworzeniu projektu Firebase możesz utworzyć konfigurację testową i przeprowadzić testy:

  1. W menu głównym kliknij Uruchom > Edytuj konfiguracje.
  2. Kliknij Add New Configuration (Dodaj nową konfigurację) i wybierz Android Instrumented Tests (Testy instrumentowane na Androida).
  3. Wpisz lub wybierz szczegóły testu, takie jak nazwa testu, typ modułu, typ testu i klasa testowa.
  4. W menu Cel w sekcji Opcje celu wdrożenia wybierz Matryca urządzeń Laboratorium Firebase.
  5. Jeśli nie jesteś zalogowanym użytkownikiem, kliknij Zaloguj się przez Google i zezwól Android Studio na dostęp do Twojego konta.
  6. Obok opcji Projekt w chmurze wybierz swój projekt Firebase z listy.
  7. W sekcji Konfiguracja macierzy wybierz z menu jedną z konfiguracji domyślnych lub utwórz własną, klikając Otwórz okno . Możesz wybrać urządzenia, wersje Androida, języki i orientacje ekranu, na których chcesz przetestować swoją aplikację. Laboratorium Firebase przetestuje Twoją aplikację pod kątem każdej wybranej kombinacji podczas generowania wyników testu.
  8. Kliknij OK w oknie Run/Debug Configurations (Konfiguracje uruchamiania/debugowania), aby zamknąć okno.
  9. Aby uruchomić testy, kliknij Uruchom .

Rysunek 8. Tworzenie konfiguracji testowej dla Laboratorium Firebase.

Analizowanie wyników testu

Gdy Laboratorium Firebase zakończy testy, otworzy się okno Uruchom z wynikami, jak pokazano na ilustracji 9. Aby zobaczyć wszystkie wykonane testy, konieczne może być kliknięcie Pokaż zaliczone .

Rysunek 9. Wyniki testów instrumentowanych w Laboratorium Firebase.

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

Zobacz relację z testu

Narzędzie zasięgu testów jest dostępne w przypadku testów jednostkowych, które umożliwia śledzenie odsetka i obszarów kodu aplikacji objętych testami jednostkowy. Użyj narzędzia do sprawdzania zasięgu testów, aby sprawdzić, czy udało Ci się odpowiednio przetestować elementy, klasy, metody i wiersze kodu tworzące Twoją aplikację.

Aby uruchomić testy z pokryciem, wykonaj czynności opisane w sekcji Przeprowadzanie testów. Tylko zamiast klikać Uruchom , kliknij Uruchom nazwę testu z pokryciem . W oknie Projekt ta opcja może być ukryta w sekcji Więcej uruchomienia/debugowania. Ustawienia pokrycia możesz też skonfigurować w oknie Konfiguracja uruchamiania/debugowania na karcie Zasięg kodu.

Rysunek 10. Wartości procentowe pokrycia kodu aplikacji.

Wyświetlanie wyników testu

Gdy uruchomisz co najmniej jeden test w Android Studio, wyniki pojawią się w oknie Uruchom. Rysunek 11 przedstawia udany przebieg testu.

Rysunek 11. Wyniki testu zostaną wyświetlone w oknie Uruchamianie.

W oknie Uruchom po lewej stronie wyświetlą się testy w widoku drzewa, a wyniki i komunikaty z bieżącego zestawu testów – w panelu wyników po prawej stronie. Za pomocą pasków narzędzi, menu kontekstowych i ikon stanu możesz zarządzać wynikami testu w następujący sposób:

  1. Użyj paska narzędzi do uruchamiania, aby ponownie uruchomić bieżący test, zatrzymać bieżący test, ponownie uruchomić testy zakończone niepowodzeniem (niewyświetlane, ponieważ ta funkcja jest dostępna tylko do testów jednostkowych), wstrzymać dane wyjściowe i zrzut wątków.
  2. Do filtrowania i sortowania wyników testu użyj paska narzędzi do testowania. Możesz też rozwijać i zwijać węzły, wyświetlać zasięg testów oraz importować lub eksportować wyniki testów.
  3. Kliknij menu kontekstowe, aby śledzić trwający test, wyświetlić statystyki wbudowane, przewinąć do zrzutu stosu, otworzyć kod źródłowy w wyjątku, automatycznie przewinąć do źródła i po zakończeniu testu wybrać pierwszy nieudany test.
  4. Ikony stanu testu wskazują, czy test zawiera błąd, został zignorowany, nie powiódł się, jest w toku, został zakończony, został wstrzymany, został zakończony czy nie został uruchomiony.
  5. Kliknij prawym przyciskiem myszy wiersz w widoku drzewa, aby wyświetlić menu kontekstowe, które pozwala uruchomić testy w trybie debugowania, otworzyć testowy plik źródłowy kodu lub przejść do wiersza w testowanym kodzie źródłowym.

Analizowanie nieudanych testów

Jeśli co najmniej jeden z testów zakończy się niepowodzeniem, w oknie z wynikami pojawi się znak ostrzegawczy z liczbą niepowodzeń (np. „Niepowodzenie testów: 1”):

Rysunek 12. Nieudane szczegóły testu w panelu wyników.

Gdy klikniesz nieudany test w widoku drzewa po lewej stronie, w panelu wyników po prawej stronie pojawią się szczegóły danego testu. Wyświetla oczekiwaną wartość obok rzeczywistej wartości, co umożliwia ich porównanie. Link Kliknij, aby zobaczyć różnicę otwiera przeglądarkę różnic, w której możesz zobaczyć wyniki obok siebie.

Więcej informacji

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