Pakiet w ramach Tradefed oznacza konfigurację, w której kilka testów jest przeprowadzanych w ramach który jest najczęściej używany do uruchamiania testów.
W Tradefed pakiety są uruchamiane za pomocą klasy ITestSuite
, co umożliwia dodawanie i usuwanie testów niezależnie od sposobu ich uruchamiania.
Definicje
- Pakiet: zestaw modułów testowych skonfigurowanych tak, by uruchamiały się na podobnym poziomie najwyższego poziomu konfiguracji, aby raportować wyniki przy użyciu jednego wywołania.
- Konfiguracja najwyższego poziomu: konfiguracja została zastosowana na urządzeniach przed uruchomieniem modułami testowymi.
- Konfiguracja główna: konfiguracja XML Tradefed, na poziomie pakietu, wskazuje, które moduły należy uruchomić i jaką konfigurację najwyższego poziomu należy przeprowadzić. .
- Konfiguracja na poziomie modułu: konfiguracja została zastosowana na urządzeniach tuż przed uruchomieniem . Są to tak zwane konfiguracje modułów.
- Konfiguracja modułu: odnosi się do pliku XML Tradefed
AndroidTest.xml
konfiguracja opisująca moduły i określoną konfigurację na poziomie modułu, co powinno się zmienić. - Moduł: jednostka testowa składająca się z etapu konfiguracji (konfiguracja na poziomie modułu), etapu wykonywania testu i etapu rozwiązywania.
- Ponowna próba w ramach modułu: automatyczne ponawianie próby wykonywane przez uprzęże wewnątrz modułu.
- Ponowienie próby w pakiecie: ponowne uruchomienie wszystkich nieudanych testów pakietu.
Struktura ITestSuite
ITestSuite
w ramach Tradefed oznacza wspólną klasę bazową uruchamiającą wykonanie pakietu. Jest
udostępniane przez wszystkie główne zestawy testów, a w szczególności system Android Compatibility Test
Suite (CTS) i Android Vendor Test Suite
(VTS) i zapewnia spójność procesu wykonywania.
we wszystkich apartamentach.
Czasami wskaźnik ITestSuite nazywamy uruchamiaczem zestawu.
Podczas wykonywania pakietu program wykonawczy wykonuje te czynności:
- Załaduj konfigurację modułu i określaj, który zestaw ma być uruchamiany.
Uruchom każdy moduł:
- Przeprowadź konfigurację na poziomie modułu.
- Przeprowadzaj testy modułów.
- Przeprowadź analizę na poziomie modułu.
Zgłoś wyniki.
Konfiguracja na najwyższym poziomie
Z punktu widzenia Tradefed ITestSuite
to tylko kolejny test. To złożone zadanie
jeden, ale nadal jest tylko testem, jak każdy inny IRemoteTest
. Zatem podczas określania
w przypadku uruchomienia pakietu w konfiguracji Tradefed, Tradefed
wzorzec konfiguracji: uruchomiony build_provider
, target_preparer
, test
(w tym przypadku nasz pakiet) oraz target_cleaner
.
Ta sekwencja w konfiguracji Tradefed zawierającej ITestSuite
to konfiguracja najwyższego poziomu.
Przykład:
<configuration description="Common config for Compatibility suites">
<build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
<!-- Setup applied before the suite: so everything running in the suite will
have this setup beforehand -->
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="run-command" value="settings put global package_verifier_enable 0" />
<option name="teardown-command" value="settings put global package_verifier_enable 1"/>
</target_preparer>
<!-- Our ITestSuite implementation -->
<test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />
<result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>
Metadane modułu
Metadane modułu to dodatkowe informacje określone w module testowym.AndroidTest.xml
Te metadane umożliwiają podanie dodatkowych informacji na temat:
moduł, a moduły można filtrować przy użyciu metadanych.
Przykładowe metadane:
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Przykład filtra metadanych:
--module-metadata-include-filter component=framework
Powyższe polecenie spowoduje uruchomienie wszystkich modułów z ramką jako metadane komponentu.
Pełny przykład AndroidTest.xml
:
<configuration description="Config for CTS Gesture test cases">
<option name="test-suite-tag" value="cts" />
<!-- Metadata -->
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
<!-- End: metadata -->
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
<option name="cleanup-apks" value="true" />
<option name="test-file-name" value="CtsGestureTestCases.apk" />
</target_preparer>
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="android.gesture.cts" />
<option name="runtime-hint" value="10m50s" />
</test>
</configuration>
Moduł z parametrami
Specjalnym typem metadanych są parameter
.
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Te metadane określają, że moduł musi być wykonywany w innym trybie, na przykład jako aplikacja natychmiastowa, a nie w standardowym trybie aplikacji.
Wszystkie możliwe tryby lub parametry są opisane za pomocą funkcji ModuleParameters
i mają powiązany moduł obsługi w ModuleParametersHelper
, który umożliwia zmianę konfiguracji modułu w celu wykonania w określonym trybie.
Na przykład tryb aplikacji błyskawicznej wymusza instalację pakietu APK jako aplikacji błyskawicznej. i trybu uzyskiwania zgody.
Aby parametryzacja mogła się odbyć, musisz ją włączyć w wierszu poleceń:
--enable-parameterized-modules
Możliwe jest też uruchomienie pojedynczego trybu za pomocą:
--enable-parameterized-modules --module-parameter <Mode>
--enable-parameterized-modules --module-parameter INSTANT_APP
Gdy działa wersja modułu z parametrami, raportuje wyniki w
z nazwą modułu z parametrami, np. CtsGestureTestCases[instant]
zamiast
w podstawy: CtsGestureTestCases
.