Eine Suite in Tradefed bezieht sich auf eine Einrichtung, in der mehrere Tests unter einem der die gesamte Ausführung steuert.
In Tradefed werden die Suiten
ITestSuite
, mit der Tests unabhängig von ihrer Art hinzugefügt und entfernt werden können.
ausführen.
Definitionen
- Suite: Eine Gruppe von Testmodulen, die für die Ausführung unter einer ähnlichen obersten Ebene einrichten, um ihre Ergebnisse in einem einzigen Aufruf zu melden.
- Einrichtung auf oberster Ebene: Die Einrichtung wird auf die Geräte angewendet, bevor eine der Testmodule.
- Hauptkonfiguration: Die gehandelte XML-Konfiguration auf Suiteebene, die wird beschrieben, welche Module ausgeführt werden und welche oberste Ebene eingerichtet werden sollte. verwendet.
- Einrichtung auf Modulebene: Die Einrichtung wird direkt vor der Ausführung auf die Geräte angewendet. -Modul. Diese werden auch als modulspezifische Konfigurationen bezeichnet.
- Modulkonfiguration: Bezieht sich auf die gehandelte XML-Datei von
AndroidTest.xml
Konfiguration, die die Module beschreibt und welche Einrichtung auf Modulebene sollte erledigt werden. - Modul: Die Testeinheit besteht aus einem Einrichtungsschritt (Einrichtung auf Modulebene), einem Test einen Ausführungs- und einen Trennschritt an.
- Wiederholung innerhalb des Moduls: Automatische Wiederholung durch das Netzwerk innerhalb des Moduls.
- Suite-Wiederholung: Vollständige Wiederholung der zuvor fehlgeschlagenen Tests der Suite.
ITestSuite-Struktur
ITestSuite
„Tradefed“ bezieht sich auf die gemeinsame Basisklasse für die Ausführung einer Suite. Es ist
die von allen großen Testsuites verwendet werden, insbesondere dem Android-Kompatibilitätstest
Suite (CTS) und Android Vendor Test Suite
(VTS) und sorgt für eine einheitliche Ausführung
in allen Suiten.
Wir bezeichnen ITestSuite manchmal als Suite Runner.
Der Suite-Runner führt bei der Ausführung die folgenden Schritte aus:
- Laden Sie die Konfiguration des Moduls und bestimmen Sie, welcher Satz ausgeführt werden soll.
Führen Sie jedes Modul aus:
- Einrichtung auf Modulebene ausführen.
- Modultests ausführen.
- Teardown auf Modulebene ausführen.
Melden Sie die Ergebnisse.
Einrichtung auf oberster Ebene
Aus Tradefed-Sicht ist ITestSuite
nur ein weiterer Test. Es ist ein komplexes
ist aber wie jeder andere IRemoteTest
nur ein Test. Wenn Sie also
Suite-Runner in einer Tradefed-Konfiguration zu verwenden,
Muster der Konfiguration: build_provider
wird ausgeführt, target_preparer
, Test
(in diesem Fall unsere Suite) und target_cleaner
.
Diese Sequenz in der Tradefed-Konfiguration mit der ITestSuite
ist die
auf oberster Ebene.
Beispiel:
<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>
Modulmetadaten
Wir nennen Modulmetadaten zusätzliche Informationen, die im Testmodul angegeben sind.
AndroidTest.xml
Mit diesen Metadaten können Sie zusätzliche Informationen
und die Module können anhand der Metadaten gefiltert werden.
Beispielmetadaten:
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Beispielfilter für Metadaten:
--module-metadata-include-filter component=framework
Der obige Code würde alle Module mit einem Framework als Komponentenmetadaten ausführen.
Vollständiges AndroidTest.xml
-Beispiel:
<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>
Modul parametrisiert
Ein spezieller Metadatentyp ist parameter
.
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Diese Metadaten geben an, dass das Modul in einem anderen mode zum Beispiel als Instant-App anstelle eines Standard-App-Modus.
Alle möglichen Modi und Parameter werden durch
ModuleParameters
und einen zugehörigen Handler in
ModuleParametersHelper
können Sie festlegen, dass das Modul
im jeweiligen Modus ausgeführt wird.
Der Instant-App-Modus erzwingt beispielsweise die APK-Installation als Instant- .
Für die Parametrisierung muss sie in der Befehlszeile aktiviert werden. durch:
--enable-parameterized-modules
Es ist auch möglich, einen bestimmten Modus mit folgenden Methoden auszuführen:
--enable-parameterized-modules --module-parameter <Mode>
--enable-parameterized-modules --module-parameter INSTANT_APP
Wenn eine parametrisierte Version eines Moduls ausgeführt wird, werden die Ergebnisse unter
einen parametrisierten Modulnamen, z. B. CtsGestureTestCases[instant]
im Vergleich zu
Basis-CtsGestureTestCases
.