W tym rozdziale dowiesz się, jak uruchamiać testy Trade Federation i współtworzyć je po wprowadzeniu zmian w projekcie. Obejmuje to m.in.:
- gdzie dodać nowe klasy testów jednostkowych,
- uruchamianie testów jednostkowych w Eclipse i poza środowiskiem Eclipse IDE,
- gdzie dodać testy funkcjonalne,
- uruchamianie testów funkcjonalnych,
- lokalne uruchamianie niektórych testów wstępnych TF.
Dodawanie testów jednostkowych
W projekcie Android Open Source Project (AOSP) dodaj klasę testów jednostkowych w: tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java
WAŻNE: dodanie nowych klas testów jednostkowych w tych lokalizacjach spowoduje, że będą one automatycznie uruchamiane w ramach testów wstępnych bez dodatkowej konfiguracji.
Uruchamianie testów jednostkowych
Wszystkie testy jednostkowe i funkcjonalne AOSP dla Trade Federation znajdują się w
the
tools/tradefederation/core/tests
project.
Aby uruchomić pojedynczy test jednostkowy w Eclipse, kliknij test prawym przyciskiem myszy i wybierz Run As > JUnit (Uruchom jako > JUnit). Aby uruchomić wszystkie testy jednostkowe, uruchom pakiet com.android.tradefed.UnitTests.
Test jednostkowy możesz też uruchomić z wiersza poleceń w drzewie źródłowym Tradefed po skompilowaniu, np. tak: tools/tradefederation/core/javatests/run_tradefed_tests.sh.
Testy jednostkowe można wykonywać samodzielnie, ale testy funkcjonalne należy wykonywać za pomocą Trade Federation. Wymagają one urządzenia z Androidem. Wszystkie testy funkcjonalne powinny być zgodne z konwencją nazewnictwa *FuncTest.
Sprawdzanie wyników testów jednostkowych
Podczas uruchamiania skryptu run_tradefed_tests.sh testy jednostkowe sprawdzają wszystkie części platformy testowej, w tym niektóre warunki błędów. Skrypt wyświetli w konsoli szczegółowe dane wyjściowe, w tym zrzuty stosu.
Podsumowanie wyników na końcu wskaże, czy wystąpił błąd.
Przykład podsumowania w konsoli:
12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]
Wszystkie testy są utrzymywane w stanie, w którym przechodzą, więc jeśli wystąpi jakikolwiek błąd w Twojej lokalnej zmianie, upewnij się, że testy zostały poprawione.
Dodawanie testów funkcjonalnych
Jeśli test funkcjonalny obejmuje urządzenie (używa dowolnego interfejsu API
ITestDevice), definicja pakietu znajduje się wcom.android.tradefed.DeviceFuncTests. W przeciwnym razie definicja pakietu znajduje się wcom.android.tradefed.FuncTests.Jeśli metody testowe pasują do jednej z istniejących podklas pakietu, dodaj je tam. W przeciwnym razie możesz dodać nową klasę do odpowiedniego pakietu.
W obu przypadkach, dodając test do pakietu, automatycznie uruchomisz go w potoku CI wraz z innymi testami funkcjonalnymi.
Uruchamianie testów funkcjonalnych
Aby uruchomić test funkcjonalny w Eclipse:
- Upewnij się, że urządzenie jest podłączone do hosta oraz że
adbi w razie potrzebyfastbootznajdują się w ścieżce PATH Eclipse. Najłatwiej to zrobić, uruchamiając Eclipse z powłoki skonfigurowanej z odpowiednią ścieżką PATH. - Utwórz aplikację w Javie. Skonfiguruj uruchomienie za pomocą Run > Run configurations (Uruchom > Konfiguracje uruchomienia).
- Ustaw projekt na
tradefed-tests, a klasę główną nacom.android.tradefed.command.CommandRunner. - Uruchom
m tradefed-all. - Na karcie Arguments (Argumenty) podaj te argumenty wiersza poleceń:
host --class <full path of test class to run> - Kliknij Run (Uruchom).
Aby uruchomić testy funkcjonalne poza Eclipse:
- Skompiluj Trade Federation.
- Podłącz urządzenie z Androidem do hosta.
- Uruchom
tools/tradefederation/core/javatests/run_tradefed_func_tests.sh. - Opcjonalnie możesz wybrać urządzenie, dodając
--serial <serial no>zgodnie z tym, co jest widoczne w danych wyjściowych poleceniaadb devices.
Uruchamianie testów wstępnych TF na podstawie lokalnych zmian
Jeśli chcesz uruchomić testy w podobny sposób jak w przypadku testów wstępnych TF, użyj tego polecenia:
tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh
Spowoduje to uruchomienie wszystkich testów wstępnych TF na podstawie lokalnie skompilowanego TF, co pomoże Ci sprawdzić, czy Twoja zmiana nie powoduje niepowodzenia żadnego testu.
Testy wstępne TF są nadzbiorem testów jednostkowych opisanych powyżej, ale ich uruchomienie trwa dłużej. Dlatego zalecamy uruchamianie testów jednostkowych podczas programowania, aby szybciej sprawdzać poprawność, oraz uruchamianie testów wstępnych przed przesłaniem CL.