Atest to narzędzie wiersza poleceń, które umożliwia użytkownikom kompilowanie, instalowanie i uruchamianie Android przeprowadza testy lokalnie, znacznie przyspieszając ponowne przeprowadzanie testów bez konieczności znajomość narzędzi testowych Federacji Handlowej, poleceń wiersza poleceń. Z tego artykułu dowiesz się, jak używać Atest do uruchamiania Androida testów.
Ogólne informacje o pisaniu testów na Androida znajdziesz w artykule Testowanie platformy Androida.
Informacje o ogólnej strukturze Atest można znaleźć w Przewodnik dla programistów Atest.
Informacje o przeprowadzaniu testów w plikach TEST_MAPPING w Atest znajdziesz tutaj Przeprowadzam testy w plikach TEST_MAPPING.
Aby dodać funkcję do Atest, postępuj zgodnie z Przepływ pracy programistów w Atest.
Konfigurowanie środowiska
Aby skonfigurować środowisko Atest, wykonaj instrukcje podane w artykułach Konfigurowanie środowiska, Wybieranie celu i Tworzenie kodu.
Podstawowe użycie
Polecenia Atest mają taką postać:
atest test-to-run [optional-arguments]
Opcjonalne argumenty
W poniższej tabeli znajdziesz najczęściej używane argumenty. Pełna lista to
dostępny do atest --help
.
Option | Długa opcja | Opis |
---|---|---|
-b |
--build |
Tworzy środowiska docelowe testowe. (domyślna) |
-i |
--install |
Instaluje artefakty testowe (pliki APK) na urządzeniu. (domyślna) |
-t |
--test |
Uruchamia testy. (domyślna) |
-s |
--serial |
Uruchamia testy na określonym urządzeniu. W danym momencie można testować 1 urządzenie. |
-d |
--disable-teardown |
Wyłącza dezaktywację i czyszczenie testowe. |
|
--dry-run |
Uruchamia próbnie uruchomienie Atest bez konieczności tworzenia, instalowania czy uruchamiania testów. |
-m |
--rebuild-module-info |
Wymusza ponowne utworzenie pliku module-info.json . |
-w |
--wait-for-debugger |
Czeka na zakończenie działania debugera przed wykonaniem polecenia. |
-v |
--verbose |
Wyświetla logowanie na poziomie DEBUG. |
|
--iterations |
Zapętla testy aż do osiągnięcia maksymalnej liczby iteracji. (domyślnie 10) |
|
--rerun-until-failure [COUNT=10] |
Ponownie uruchamia wszystkie testy do momentu wystąpienia błędu lub do osiągnięcia maksymalnej liczby iteracji. udało się dotrzeć. (domyślnie 10) |
|
--retry-any-failure [COUNT=10] |
Ponowne uruchamianie nieudanych testów do czasu, gdy zostaną one zaliczone lub osiągnięta zostanie maksymalna liczba iteracji. (10) domyślnie) |
|
--start-avd |
Automatycznie tworzy średni czas oglądania i uruchamia testy na urządzeniu wirtualnym. |
|
--acloud-create |
Tworzy usługę AVD przy użyciu polecenia acloud . |
|
--[CUSTOM_ARGS] |
Określa niestandardowe argumenty dla narzędzi do testowania. |
-a |
--all-abi |
Przeprowadza testy dla wszystkich dostępnych architektur urządzeń. |
|
--host |
Przeprowadza cały test na hoście bez urządzenia. Uwaga: przeprowadzanie testu hosta, który wymaga urządzenia z --host
nie powiedzie się. |
|
--history |
Wyniki testów są wyświetlane w kolejności chronologicznej. |
|
--latest-result |
Drukuje najnowszy wynik testu. |
Więcej informacji o -b
, -i
i -t
znajdziesz tutaj
Określ kroki: kompilacja, instalacja lub uruchomienie.
Określ testy
Aby przeprowadzić testy, wybierz co najmniej 1 test, używając jednego z tych parametrów identyfikatory:
- Nazwa modułu
- Moduł:klasa
- Nazwa zajęć
- Test integracji z TradeF
- Ścieżka pliku
- Nazwa pakietu
Oddziel odwołania do wielu testów za pomocą spacji. Przykład:
atest test-identifier-1 test-identifier-2
Nazwa modułu
Aby uruchomić cały moduł testu, użyj jego nazwy. Wpisz wyświetlaną nazwę
w zmiennych LOCAL_MODULE
lub LOCAL_PACKAGE_NAME
w tym teście
Android.mk
lub Android.bp
.
Przykłady:
atest FrameworksServicesTests
atest CtsVideoTestCases
Moduł:klasa
Aby uruchomić pojedynczą klasę w module, użyj polecenia Module:Class. Moduł to
tak samo jak w sekcji Nazwa modułu. Class to nazwa klasy
klasa testowa w pliku .java
i może być w pełni kwalifikowaną nazwą klasy lub
podstawowej nazwy.
Przykłady:
atest CtsVideoTestCases:VideoEncoderDecoderTest
atest FrameworksServicesTests:ScreenDecorWindowTests
atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests
Nazwa zajęć
Aby uruchomić jedną klasę bez podawania nazwy modułu, użyj klasy imię i nazwisko.
Przykłady:
atest ScreenDecorWindowTests
atest VideoEncoderDecoderTest
Test integracji z TradeF
Aby uruchomić testy zintegrowane bezpośrednio z TradeFed (niemoduły), wpisz nazwę tak, jak jest ona widoczna w wyniku polecenia tradefed.sh list configs
. Na przykład:
Aby uruchomić
Test reboot.xml
:
atest example/reboot
Aby uruchomić
Test native-benchmark.xml
:
atest native-benchmark
Ścieżka pliku
Atest umożliwia przeprowadzanie testów zarówno opartych na modułach, jak i integracyjnych, poprzez podając odpowiednie ścieżki do pliku testowego lub katalogu. Dodatkowo obsługuje uruchamianie jednej klasy przez określenie ścieżki do jej pliku Java. Obsługiwane są zarówno ścieżki względne, jak i bezwzględne.
Uruchom moduł
Poniższe przykłady pokazują 2 sposoby uruchamiania modułu CtsVideoTestCases
za pomocą ścieżki pliku.
Uruchamianie z urządzenia z Androidem repo-root
:
atest cts/tests/video
Uruchom z Androida repo-root/cts/tests/video
:
atest .
Uruchamianie zajęć testowych
Z przykładu poniżej dowiesz się, jak uruchomić określoną klasę w
Moduł CtsVideoTestCases
przy użyciu ścieżki pliku.
Z Androida repo-root
:
atest cts/tests/video/src/android/video/cts/VideoEncoderDecoderTest.java
Przeprowadzanie testu integracji
Przykład poniżej pokazuje, jak przeprowadzić test integracji za pomocą ścieżki pliku
z Androida repo-root
:
atest tools/tradefederation/contrib/res/config/example/reboot.xml
Nazwa pakietu
Atest obsługuje wyszukiwanie testów według nazwy pakietu.
Przykłady:
atest com.android.server.wm
atest com.android.uibench.janktests
Określ kroki: kompilacja, instalacja lub uruchomienie
Aby określić, które kroki należy wykonać, użyj opcji -b
, -i
i -t
. Jeśli
nie określisz żadnej opcji, wówczas wszystkie kroki zostaną wykonane.
-t
- Tylko środowisko docelowe kompilacji:
atest -b test-to-run
- Przeprowadź tylko testy:
atest -t test-to-run
- Zainstaluj plik APK i wykonaj testy:
atest -it test-to-run
- Kompilowanie i uruchamianie, ale nie instaluj:
atest -bt test-to-run
Atest może wymusić pominięcie kroku czyszczenia lub demontażu. Wiele testów, np.
CTS, wyczyść urządzenie po przeprowadzeniu testu, a potem spróbuj wykonać test ponownie
z parametrem -t
zakończy się niepowodzeniem bez parametru --disable-teardown
. Użyj -d
przed
-t
, aby pominąć etap czyszczenia testowego i przetestować go iteracyjnie.
atest -d test-to-run
atest -t test-to-run
Uruchamianie określonych metod
Atest obsługuje uruchamianie określonych metod w ramach klasy testowej. Chociaż cały system konieczne jest utworzenie modułu, co skraca czas potrzebny na przeprowadzenie testów. Aby uruchomić określonych metod, wskaż klasę przy użyciu jednego z obsługiwanych sposobów zidentyfikowanie klasy (moduł:klasa, ścieżka pliku itp.) i dołączenie nazwy klasy :
atest reference-to-class#method1
Jeśli podajesz kilka metod, rozdziel je przecinkami:
atest reference-to-class#method1,method2,method3
Przykłady:
atest com.android.server.wm.ScreenDecorWindowTests#testMultipleDecors
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval
Te 2 przykłady pokazują preferowane sposoby uruchamiania pojedynczej metody:testFlagChange
. Te przykłady są preferowane zamiast samej nazwy klasy
bo określenie lokalizacji modułu lub pliku Java umożliwia Atest znalezienie
testujemy znacznie szybciej.
Użycie właściwości Module:Class:
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange
Z Androida repo-root:
atest frameworks/base/services/tests/wmtests/src/com/android/server/wm/ScreenDecorWindowTests.java#testFlagChange
W różnych klasach i modułach można uruchamiać wiele metod:
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors
Uruchamianie wielu zajęć
Aby uruchomić kilka zajęć, rozdziel je spacjami, tak samo jak w przypadku biegania wielu testów. Atest skutecznie kompiluje i uruchamia klasy, więc określenie podzbioru klas w module poprawia wydajność w porównaniu z całym .
Aby uruchomić 2 klasy w tym samym module:
atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests
Aby uruchomić 2 zajęcia w różnych modułach:
atest FrameworksServicesTests:ScreenDecorWindowTests CtsVideoTestCases:VideoEncoderDecoderTest
Uruchamianie plików binarnych GTest
Atest może uruchamiać pliki binarne GTest. Aby uruchomić te testy na wszystkich dostępnych architekturach urządzeń, użyj opcji -a
. W tym przykładzie są to armeabi-v7a
(ARM 32-bitowy) i arm64-v8a
(ARM 64-bitowy).
Przykładowy test danych wejściowych:
atest -a libinput_tests inputflinger_tests
Aby wybrać konkretny plik binarny GTest do uruchomienia, wskaż test dwukropkiem (:). i hashtagu (#), aby dokładniej określić metodę.
Na przykład dla tej definicji testu:
TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)
Aby określić cały test, wykonaj te czynności:
atest inputflinger_tests:InputDispatcherTest
Możesz też uruchomić pojedynczy test, korzystając z tych opcji:
atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents
Przeprowadź testy w TEST_MAPPING
Atest może uruchamiać testy w plikach TEST_MAPPING
.
Bezpośrednie uruchamianie testów przed przesłaniem
Uruchamiaj testy wstępnego przesyłania w plikach TEST_MAPPING
w katalogach bieżących i nadrzędnych:
atest
Przeprowadzaj testy przed przesłaniem w TEST_MAPPING
plikach w /path/to/project i
jego katalogi nadrzędne:
atest --test-mapping /path/to/project
Uruchom określoną grupę testową
Dostępne grupy testowe: presubmit
(wartość domyślna), postsubmit
,
mainline-presubmit
i all
.
Przeprowadzanie testów po przesłaniu w plikach TEST_MAPPING w bieżącym katalogu i katalogu nadrzędnym:
atest :postsubmit
Przeprowadź testy ze wszystkich grup w plikach TEST_MAPPING:
atest :all
Przeprowadzaj testy po przesłaniu w plikach TEST_MAPPING w /path/to/project i jego katalogi nadrzędne:
atest --test-mapping /path/to/project:postsubmit
Przeprowadzaj testy głównej linii w plikach TEST_MAPPING w /path/to/project i jego katalogi nadrzędne:
atest --test-mapping /path/to/project:mainline-presubmit
Przeprowadzanie testów w podkatalogach
Domyślnie Atest wyszukuje testy w plikach o liczbie TEST_MAPPING wzwyż (od
bieżącego lub podanego katalogu do katalogów nadrzędnych). Jeśli chcesz też uruchamiać testy w plikach TEST_MAPPING w podkatalogach, użyj opcji --include-subdirs
, aby wymusić uwzględnienie tych testów przez Atest:
atest --include-subdirs /path/to/project
Przeprowadzanie testów w iteracji
Uruchamiaj testy w iteracji, przekazując argument --iterations
. czy spełnia wymagania,
lub nie powiedzie się, Atest będzie powtarzać test aż do osiągnięcia maksymalnej liczby iteracji.
Przykłady:
Domyślnie test Atest jest powtarzany 10 razy. Liczba iteracji musi być liczbą dodatnią liczba całkowita.
atest test-to-run --iterations
atest test-to-run --iterations 5
Te metody ułatwiają wykrywanie niepewnych testów:
Sposób 1. Uruchamiaj wszystkie testy aż do wystąpienia błędu lub osiągnięcia maksymalnej liczby iteracji.
- Zatrzymaj, gdy wystąpi błąd lub iteracja dobiegnie do dziesiątej (domyślnie) rundy.
atest test-to-run --rerun-until-failure
- Zatrzymaj, gdy wystąpi błąd lub iteracja osiągnie 100 okrążeń.
atest test-to-run --rerun-until-failure 100
Sposób 2. Uruchamiaj tylko nieudane testy, dopóki nie zostaną zaliczone lub nie zostanie osiągnięta maksymalna liczba iteracji.
- Załóżmy, że
test-to-run
ma wiele przypadków testowych i jeden z nie powiodły się. Przeprowadź tylko nieudany test 10 razy (domyślnie) lub do czasu, aż test się powiedzie.atest test-to-run --retry-any-failure
- Zatrzymaj test zakończony niepowodzeniem, gdy zakończy się on lub dobiegnie końca do dziesiątej rundy.
atest test-to-run --retry-any-failure 100
Przeprowadzanie testów na urządzeniach AVD
Atest może uruchamiać testy na nowo utworzonym AVD. Uruchom acloud create
, aby utworzyć AVD i elementy kompilacji, a potem uruchom testy, korzystając z tych przykładów.
Uruchom AVD i przeprowadź na nim testy:
acloud create --local-instance --local-image && atest test-to-run
W ramach uruchomienia testowego uruchom AVD:
atest test-to-run --acloud-create "--local-instance --local-image"
Aby dowiedzieć się więcej, uruchom acloud create --help
.
Przekazywanie opcji do modułu
Atest może przekazywać opcje modułów testowych. Aby dodać wiersz poleceń TradeFed do testu, zastosuj poniższą strukturę i upewnij się, że niestandardowy są zgodne z formatem opcji wiersza poleceń Tradefed.
atest test-to-run -- [CUSTOM_ARGS]
Zaliczaj opcje modułu testów, aby kierować do osób przygotowujących lub wykonujących testy określone w testowy plik konfiguracyjny:
atest test-to-run -- --module-arg module-name:option-name:option-value
atest GtsPermissionTestCases -- --module-arg GtsPermissionTestCases:ignore-business-logic-failure:true
Przekazywanie opcji do typu lub klasy Runner:
atest test-to-run -- --test-arg test-class:option-name:option-value
atest CtsVideoTestCases -- --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true
Więcej informacji o opcjach dostępnych tylko do testów: Opcje przekazywania do modułów.