Na tej stronie znajdują się informacje o tym, jak napisać test po stronie hosta, który nie wymaga tagu np. w ramach testu w instancji GCE z systemem Linux. (szczegółowe informacje o jak napisać test oparty na hoście, który wymaga urządzenia, patrz . napisać test przeprowadzany przez gospodarza w federacji handlowej).
Typy testów po stronie hosta
W ramach Federacji Handlowej można przeprowadzać różne rodzaje testów po stronie hosta. (TF).
Testy natywne (gtest)
tworzyć testy reklam natywnych, (gtests), aby przetestować platformę. Jeśli test nie wymaga urządzenia, uruchom go na host; test przebiegnie znacznie szybciej. Aby skonfigurować uruchamianie takich testów hosta testowego, użyj narzędzia TF Runner TF HostGTest.
Przykładowa konfiguracja testowa TradeFed:
<configuration description="Runs hello_world_test."> <option name="null-device" value="true" /> <test class="com.android.tradefed.testtype.HostGTest" > <option name="module-name" value="hello_world_test" /> </test> </configuration>
Konfiguracja testowa uruchamia test gtest (hello_world_test) na hoście. Przykładowy test Konfiguracja może zostać wygenerowana automatycznie. O ile Twój test nie wymaga specjalnej konfiguracji ani czyszczenia, możesz polegać na automatycznym generowaniu konfiguracji testu, by utworzyć prawidłowy test TF konfiguracji.
Aby skonfigurować test gtest po stronie hosta i włączyć automatyczne generowanie konfiguracji testu, ustaw
host_supported
do true
in
Android.bp
, na przykład hello_world_test.
Więcej informacji o tworzeniu testu natywnego znajdziesz tutaj Dodawanie nowego testu natywnego Przykład.
Testy hosta JAR
Testy hosta JAR (Java) takie jak JUnit to testy, które nie muszą uruchamiać się na urządzeniu i dostarczają kodu w Twoim projekcie Java. Takie testy można skonfigurować tak, aby uruchamiały się na pojedynczych testach przy użyciu uruchamiania HostTest.
Przykładowa konfiguracja testu TradeFed
<configuration description="Executes HelloWorldHostTest"> <test class="com.android.tradefed.testtype.HostTest" > <option name="jar" value="HelloWorldHostTest.jar" /> </test> </configuration>
Konfiguracja testu uruchamia test HelloWorldHostTest po stronie hosta. Pamiętaj, że powyższa konfiguracja testowa mogą zostać wygenerowane automatycznie. O ile Twój test nie wymaga specjalnej konfiguracji ani czyszczenia, polegaj na automatyczne generowanie konfiguracji testów w celu utworzenia prawidłowego testu TradeFed konfiguracji.
Więcej informacji o pisaniu testu hosta JAR znajdziesz tutaj: Testy hosta JAR (Java).
Testy pojedynczych hostów Java
Testy w Javie bez urządzeń można przeprowadzać w izolowanym środowisku przy niewielkim koszcie. Przed rozpoczęciem korzystania z tej formy płatności należy jednak wziąć pod uwagę kilka ważnych kwestii. dla środowiska.
- Jest to domyślny bieg używany w testach jednostkowych Robolectric i JUnit
- Tradefed obsługuje tylko testy JUnit w środowisku izolowanym.
- Obsługiwane są tylko zależności powiązane statycznie. Nie zadeklarowano zależności
z
lib
są uwzględnione w ścieżce klasy. - Uruchamianie izolacji umieszcza w ścieżce klasy tylko okrągły kreator i Twój testowy plik jar.
- Występuje pewien stały narzut na każde uruchomienie testowe wykonywane z użyciem tego biegu.
Przykładowa konfiguracja testu z The Tradefed (izolowana)
<configuration description="Executes HelloWorldHostTest"> <test class="com.android.tradefed.testtype.IsolatedHostTest" > <option name="jar" value="HelloWorldHostTest.jar" /> </test> </configuration>
Przykładowa konfiguracja funkcji Soong na potrzeby automatycznego generowania
Zamiast ręcznie tworzyć konfigurację testową, tak jak powyżej, Soong może ją automatycznie wygenerować za pomocą polecenia jak w tym przykładzie.
java_test_host { name: "HelloWorldHostTest", test_options: { unit_test: true, }, test_suites: ["general-tests"], srcs: ["test/**/*.java"], static_libs: [ "junit", ], }
Testy Roboelektryczne
W testach Robolectric wykorzystuje się ten sam bieg co w przypadku izolowanych testów hosta, w tym kilka .
- Opcja
robolectric-resources
umożliwia włączenie kilku opcji wiersza poleceń specyficznych dla Robolectric zostanie przekazana do podprocesu, a także dodaje kompilację drzewaandroid-all
do ścieżki klasy podprocesu. Pozostałe 2 sposoby to sprawdzone metody, ale ta opcja jest obowiązkowa w przypadku: Przeprowadzanie testów Robolectric z dowodem na skuteczność. - Opcja
java-folder
pozwala zmienić środowisko wykonawcze Java używane przez podproces. To jest jest niezbędna ze względu na preferowanie przez Robolectric określonych wersji Javy, które mogą nie być zgodne preferowanej metody JVM w systemie hosta. - Opcja
exclude-paths
pozwala uruchamiającemu podrzędnemu procesowi unikać wczytywania konkretnych modułów w ogóle, co jest przydatne, gdy plik JAR zawiera zbędne klasy, które mogą powodować błędy wczytywania.java.
to częsty wykluczenie, które pozwala uniknąć zgłaszania wyjątkówSecurityException
.
Przykładowa konfiguracja Robolectric
<configuration description="Executes a Sample Robolectric Test"> <option name="java-folder" value="prebuilts/jdk/jdk9/linux-x86/" /> <option name="exclude-paths" value="java" /> <option name="use-robolectric-resources" value="true" /> <test class="com.android.tradefed.testtype.IsolatedHostTest"> <option name="jar" value="RobolectricExampleTest.jar" /> </test> </configuration>
Przykładowa konfiguracja Soong na potrzeby automatycznego generowania Robolectric
Zamiast ręcznie tworzyć konfigurację testową, tak jak powyżej, funkcja Soong może automatycznie generować konfigurację, korzystając z deklaracji podobnej do tego przykładu.
android_robolectric_test { name: "HelloWorldRoboTest", srcs: [ "src/**/*.java", ], // Include the testing libraries static_libs: [ "mockito-robolectric-prebuilt", "platform-test-annotations", "testng", "truth-prebuilt", ], instrumentation_for: "HelloWorldApp", }
Test Pythona
Jeśli logika testowa jest napisana w Pythonie, użyj typu kompilacji python_test_host
, aby utworzyć plik par, który można
przeprowadzana przez TF PythonBinaryHostTest
.
Przykładowa konfiguracja testu TradeFed
<configuration description="Config to run atest unittests"> <test class="com.android.tradefed.testtype.python.PythonBinaryHostTest" > <option name="par-file-name" value="atest_unittests" /> <option name="test-timeout" value="2m" /> </test> </configuration>
Ustawienie pakietu testowego
Aby test po stronie hosta był dostępny dla pliku TF danej kompilacji, ustaw w tagu
ustawienia modułu testowania `test_suites`
na
`general-tests`
:
test_suites: ["general-tests"],
Gdy to ustawienie jest włączone, test jest spakowany do: general-tests.zip
w dniu
wartość docelową test_suites
.