W tym dokumencie opisujemy, jak przeprowadzać testy bezpośrednio z poziomu wiersza poleceń. Ten zakładamy, że wiesz już, jak utworzyć aplikację na Androida napisać testy aplikacji. Aby uzyskać więcej informacji o tworzeniu testów Więcej informacji znajdziesz w artykule Testowanie aplikacji na Androida.
Podczas tworzenia aplikacji przy użyciu systemu kompilacji Gradle narzędzie Android Gradle wtyczka, która pozwala uruchamiać testy na Gradle projektu za pomocą wiersza poleceń. Aby zyskać większą kontrolę, przeprowadź testy za pomocą narzędzia Android Debug Bridge. (adb). Jest to przydatne podczas przeprowadzania testów w ciągłej integracji.
Aby dowiedzieć się, jak przeprowadzać zautomatyzowane testy instrumentowane z poziomu wiersza poleceń przy użyciu urządzeń wirtualnych, którymi Gradle zarządza za Ciebie, przeczytaj artykuł Skalowanie testów przy użyciu Gradle Zarządzane urządzenia.
Przeprowadzanie testów za pomocą Gradle
Wtyczka Androida do obsługi Gradle umożliwia przeprowadzanie testów z poziomu projektu Gradle za pomocą wiersza poleceń.
W tabeli poniżej znajdziesz informacje o tym, jak przeprowadzać testy przy użyciu Gradle:
Typ testu jednostkowego | Polecenie do uruchomienia | Lokalizacja wyniku testu |
---|---|---|
Test jednostki lokalnej |
Uruchom zadanie test :
|
Pliki z wynikami testu HTML:path_to_your_project/module_name/build/reports/tests/
katalogu.
Pliki z wynikami testu XML: |
Test instrumentalny |
Uruchom zadanie connectedAndroidTest :
|
Pliki z wynikami testu HTML:path_to_your_project/module_name/build/reports/androidTests/connected/
katalogu.
Pliki z wynikami testu XML: |
Obsługa Gradle
skróty nazw zadań.
Zadanie connectedAndroidTest
możesz na przykład zainicjować przez:
wpisz następujące polecenie:
./gradlew cAT
Możesz też uruchamiać zadania Gradle check
i connectedCheck
. Te
przeprowadzają odpowiednio testy lokalne lub zinstruowane, ale
uwzględnij inne kontrole dodane przez inne wtyczki Gradle.
Przeprowadzanie testów w module
Zadania test
i connectedAndroidTest
służą do uruchamiania testów w każdym module w
w projektach AI. Aby przeprowadzić testy w konkretnym module, wykonaj te czynności:
poprzedzając zadanie test
lub connectedAndroidTest
nazwą modułu i znakiem
dwukropek (:). Na przykład poniższe polecenie uruchamia testy instrumentowane tylko
moduł mylibrary
:
./gradlew mylibrary:connectedAndroidTest
Przeprowadzanie testów na wariancie kompilacji
Zadania test
i connectedAndroidTest
uruchamiają testy na każdym
utwórz wariant w projekcie. Możesz kierować reklamy na
konkretnej kompilacji, używając tej składni:
- W przypadku testów jednostkowych lokalnych:
./gradlew testVariantNameUnitTest
- W przypadku testów instrumentowanych:
./gradlew connectedVariantNameAndroidTest
Uruchamianie określonych metod testowania lub klas
Gdy uruchamiasz testy jednostkowe lokalnych, Gradle pozwala kierować reklamy na konkretne testy za pomocą
flagę --tests
. Na przykład to polecenie uruchamia tylko
Testy sampleTestMethod
dla określonego wariantu kompilacji. Aby dowiedzieć się więcej o:
przy użyciu flagi --tests
, przeczytaj dokumentację Gradle dotyczącą
filtrowania testowego.
./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'
Przeprowadzanie testów za pomocą narzędzia adb
gdy uruchamiasz testy z poziomu wiersza poleceń za pomocą narzędzia Android Debug Bridge: (adb), dostępnych jest więcej opcji. wybór testów do przeprowadzenia niż jakąkolwiek inną metodą. Możesz wybrać, metody testowania, filtrowanie testów pod kątem adnotacji niestandardowych lub określanie testów . Uruchomienie testu odbywa się w całości z poziomu wiersza poleceń, pozwala dostosować testowanie za pomocą skryptów powłoki na różne sposoby.
Aby uruchomić test z poziomu wiersza poleceń, uruchom adb shell
w celu uruchomienia wiersza poleceń
na urządzeniu lub w emulatorze. Wewnątrz możesz wchodzić w interakcje z
menedżer aktywności
za pomocą polecenia am
, a w nim – instrument
, do uruchomienia testów.
Jako skrót możesz uruchomić powłokę adb, wywołać funkcję am instrument
i określić
flagami wiersza poleceń
w jednym wierszu wejściowym. Powłoka otworzy się na urządzeniu lub
w emulatorze, uruchomi testy, wyświetli dane wyjściowe, a następnie wraca do wiersza poleceń
na komputerze.
Aby przeprowadzić test przy użyciu dodatku am instrument
:
- Utwórz lub przebuduj główną aplikację. pakietu testowego.
- Zainstaluj pakiet testowy i główny aplikacji na Androida (pliki APK) na bieżące urządzenie z Androidem lub za pomocą emulatora.
W wierszu poleceń wpisz:
adb shell am instrument -w <test_package_name>/<runner_class>
Gdzie
<test_package_name>
to nazwa pakietu na Androida używanego w teście aplikacji, a<runner_class>
to nazwa klasy uruchamiania testów na Androida. którego używasz. Nazwa pakietu na Androida jest wartością atrybutu elementu manifestu atrybut pakietu w pliku manifestu pakietu testowego (AndroidManifest.xml
).Klasa ta to zwykle
AndroidJUnitRunner
:adb shell am instrument -w com.android.example/androidx.test.runner.AndroidJUnitRunner
Wyniki testu są wyświetlane w języku: STDOUT
.
flagi instrumentów am
Aby wyświetlić listę wszystkich flag do użycia z poleceniem am instrument
:
uruchom adb shell am help
. Niektóre ważne flagi opisano w
ta tabela:
Zgłoś | Wartość | Opis |
---|---|---|
-w
|
(brak) |
Wymusza oczekiwanie na uruchomienie instrumentacji przez funkcję am instrument
przed zakończeniem, zanim się zakończy. Dzięki temu funkcja
otwarte powłokę do czasu zakończenia testów. Ta flaga jest wymagana do
zobaczysz wyniki Twoich testów.
|
-r
|
(brak) |
Wyniki są zwracane w formacie nieprzetworzonym. Użyj tej flagi, gdy chcesz:
zbierać pomiary skuteczności w taki sposób, aby nie były sformatowane
wyniki testu. Ta flaga jest przeznaczona do użycia z flagą
-e perf true (podane w
am instrument options).
|
-e
|
<test_options>
|
Udostępnia opcje testowania w postaci par klucz-wartość.
Narzędzie am instrument przekazuje je do określonego
klasy instrumentacji, używając funkcji
onCreate() .
. Możesz podać wiele wystąpień
-e <test_options> Klucze i wartości są
opisane w
am opcje instrumentu. Dostępne opcje
używaj tylko tych par klucz-wartość
AndroidJUnitRunner
lub za pomocą: InstrumentationTestRunner
i jej podklas. Użycie ich razem z innymi klasami nie przyniesie żadnego efektu.
|
--no-hidden-api-checks
|
(brak) | Wyłącza ograniczenia dotyczące korzystania z ukrytych interfejsów API. Więcej Wyjaśniamy, czym są ukryte interfejsy API i jak mogą one wpłynąć aplikacja, odczyt Ograniczenia dotyczące interfejsów innych niż SDK. |
Opcje instrumentów am
Narzędzie am instrument
przekazuje opcje testowania do:
AndroidJUnitRunner
lub InstrumentationTestRunner
w postaci par klucz-wartość z użyciem flagi -e
o takiej składni:
-e <key> <value>
Niektóre klucze mogą przyjmować wiele wartości. W kolumnie
rozdzielane przecinkami. Na przykład to wywołanie funkcji
AndroidJUnitRunner
podaje wiele wartości dla klucza package
:
adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
> com.android.test/androidx.test.runner.AndroidJUnitRunner
W tabeli poniżej znajdziesz pary klucz-wartość, których możesz użyć w narzędziu uruchamiającym test:
Klucz | Wartość | Opis |
---|---|---|
package
|
<Java_package_name>
|
Pełna nazwa pakietu Java dla jednego w aplikacji testowej. Każda klasa przypadku testowego, która z tego korzysta nazwa pakietu jest wykonywana. Zwróć uwagę, że to nie jest nazwa pakietu na Androida; pakiet testowy ma jeden Nazwa pakietu na Androida, ale może zawierać kilka pakietów Javy. |
class |
<class_name> |
Pełna nazwa klasy Java dla jednego z przypadków testowych zajęcia. Wykonywana jest tylko ta klasa przypadku testowego. |
<class_name>#method name |
Pełna i jednoznaczna nazwa klasy przypadku testowego i jedna z jego metod. Tylko gdy jest wykonywana. Zwróć uwagę na krzyżyk (#) między klasami. nazwa i nazwa metody. | |
func |
true |
Uruchamia wszystkie klasy testów, które rozszerzają zakres
InstrumentationTestCase
|
unit |
true |
Uruchamia wszystkie klasy testowe, które nie rozszerzają żadnej z tych klas
InstrumentationTestCase lub
PerformanceTestCase
|
size |
[small | medium | large ]
|
Uruchamia metodę testową z adnotacjami według rozmiaru. Adnotacje są
@SmallTest , @MediumTest i
@LargeTest
|
perf |
true |
Uruchamia wszystkie klasy testowe, które implementują
PerformanceTestCase
Jeśli używasz tej opcji, określ flagę -r dla:
am instrument , dzięki czemu dane wyjściowe są przechowywane w formacie nieprzetworzonym.
i nie mają formatu wyników testu.
|
debug |
true |
Uruchamia testy w trybie debugowania. |
log |
true |
Wczytuje i rejestruje wszystkie określone testy, ale ich nie uruchamia. Test
informacje są wyświetlane w języku: STDOUT . Użyj go do weryfikacji
kombinacji innych filtrów i specyfikacji testowych.
|
emma |
true |
Przeprowadza analizę zasięgu kodu EMMA i zapisuje dane wyjściowe w
/data/<app_package>/coverage.ec . Do
zastąp lokalizację pliku, użyj klucza coverageFile
co zostało opisane w dalszej części tego artykułu.
Uwaga: ta opcja wymaga dostawcy usług EMMA
kompilację aplikacji testowej, którą można wygenerować za pomocą
Cel: |
coverageFile |
<filename> |
Zastępuje domyślną lokalizację pliku pokrycia EMMA w
urządzenia. Podaj tę wartość jako ścieżkę i nazwę pliku w formacie UNIX.
Domyślna nazwa pliku jest opisana we wpisie dotyczącym
emma klawisz.
|
Podczas korzystania z flagi -e
pamiętaj o tych kwestiach:
am instrument
wywołujeonCreate(Bundle)
. ciągiemBundle
zawierającym parę klucz-wartość pary.- Klucz
package
ma pierwszeństwo przed kluczemclass
. Jeśli podasz pakietu, a następnie osobno określić klasę w tym pakiecie, czyli Androida. uruchamia wszystkie testy w pakiecie i ignoruje klucz klasy. - Klucze
func
iunit
wzajemnie się wykluczają.
Przykłady użycia
W sekcjach poniżej znajdziesz przykłady używania am instrument
do przeprowadzania testów.
Są one oparte na następującej strukturze:
- Nazwa pakietu testowego na Androida to
com.android.demo.app.tests
. - Dwie klasyczne zajęcia testowe:
TestClass1
, który zawiera metodę testowątestMethod1
.TestClass2
, który zawiera metody testowetestMethod2
itestMethod3
.
- Uczestnik testowy to
AndroidJUnitRunner
Uruchom cały pakiet testowy
Aby uruchomić wszystkie klasy testowe w pakiecie testowym, wpisz:
adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Uruchamianie wszystkich testów w klasie przypadku testowego
Aby uruchomić wszystkie testy w klasie TestClass1
, wpisz:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Wybierz podzbiór testów
Aby uruchomić wszystkie testy w klasie TestClass1
i metodzie testMethod3
w TestClass2
,
wpisz:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1,com.android.demo.app.tests.TestClass2#testMethod3 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Więcej przypadków użycia znajdziesz w
AndroidJUnitRunner
Dokumentacja API.