Einheiten- und Funktionstests einschließen

In diesem Abschnitt wird beschrieben, wie Sie die Trade Federation-Tests ausführen und nach einer Änderung am Projekt dazu beitragen können. Dazu gehören:

  • Wo Sie die neuen Klassen für Unit-Tests hinzufügen
  • Unit-Tests in Eclipse und außerhalb der Eclipse-IDE ausführen
  • Wo Funktionstests hinzufügen
  • Funktionstests ausführen
  • Einige der vor dem Einreichen erforderlichen TF-Überprüfungen lokal ausführen

Unit-Tests hinzufügen

Fügen Sie die Klasse für die Unit-Tests im Android Open Source Project (AOSP) an folgender Stelle hinzu: tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java

WICHTIG: Wenn Sie diese Klassen an diesen Stellen hinzufügen, werden sie automatisch im Presubmit-Modus ausgeführt, ohne dass eine zusätzliche Einrichtung erforderlich ist.

Einheitentests ausführen

Alle AOSP-Unittests und Funktionstests für Trade Federation befinden sich im Projekt tools/tradefederation/core/tests.

Wenn Sie in Eclipse einen einzelnen Unit-Test ausführen möchten, klicken Sie einfach mit der rechten Maustaste auf den Test und wählen Sie Ausführen als > JUnit aus. Wenn Sie alle Unit-Tests ausführen möchten, führen Sie die Suite com.android.tradefed.UnitTests aus.

Sie können den Unit-Test auch nach dem Build über die Befehlszeile im Tradefed-Quellbaum starten, z. B. so: tools/tradefederation/core/javatests/run_tradefed_tests.sh

Unittests können eigenständig ausgeführt werden, Funktionstests sollten jedoch mit Trade Federation selbst ausgeführt werden. Für Funktionstests ist ein Android-Gerät erforderlich. Alle Funktionstests müssen der Namenskonvention *FuncTest folgen.

Ergebnisse von Unit-Tests prüfen

Wenn run_tradefed_tests.sh ausgeführt wird, werden bei den Unit-Tests alle Teile des Test-Harnesses einschließlich einiger Fehlerbedingungen getestet. Es wird eine ausführliche Ausgabe in der Konsole ausgegeben, einschließlich Stack-Traces.

In der abschließenden Zusammenfassung der Ergebnisse wird angegeben, ob ein Fehler aufgetreten ist oder nicht.

Beispiel für eine abschließende Zusammenfassung in der Konsole:

12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]

Alle Tests müssen erfolgreich sein. Wenn bei einer lokalen Änderung ein Fehler auftritt, müssen Sie die Tests korrigieren.

Funktionstests hinzufügen

  • Wenn Ihr Funktionstest ein Gerät umfasst (ITestDevice API verwendet), befindet sich die Suitendefinition in com.android.tradefed.DeviceFuncTests. Andernfalls befindet sich die Suitendefinition unter com.android.tradefed.FuncTests.

  • Wenn es sinnvoll ist, Ihre Testmethoden in eine der vorhandenen Suite-Unterklassen einzufügen, fügen Sie sie dort hinzu. Andernfalls können Sie der entsprechenden Suite eine neue Klasse hinzufügen.

  • In beiden Fällen wird der Test automatisch in der CI-Pipeline zusammen mit den anderen Funktionstests ausgeführt, wenn Sie ihn der Suite hinzufügen.

Funktionstests ausführen

So führen Sie einen Funktionstest über Eclipse aus:

  1. Achten Sie darauf, dass ein Gerät mit dem Host verbunden ist und dass adb und gegebenenfalls fastboot im PATH von Eclipse enthalten sind. Am einfachsten ist es, Eclipse über eine Shell-Konfiguration mit dem richtigen PATH zu starten.
  2. Erstellen Sie eine Java-Anwendung. Führen Sie die Konfiguration über Ausführen > Konfigurationen ausführen aus.
  3. Legen Sie für „project“ den Wert tradefed-tests und für die Hauptklasse den Wert com.android.tradefed.command.CommandRunner fest.
  4. Führen Sie m tradefed-all aus.
  5. Geben Sie auf dem Tab Argumente die folgenden Befehlszeilenargumente an: host --class <full path of test class to run>
  6. Klicken Sie auf Ausführen.

Funktionstests außerhalb von Eclipse ausführen

  1. Trade Federation erstellen
  2. Verbinden Sie ein Android-Gerät mit dem Host.
  3. tools/tradefederation/core/javatests/run_tradefed_func_tests.sh ausführen
  4. Optional können Sie das Gerät auswählen, indem Sie --serial <serial no> anhängen, wie es in der Ausgabe von adb devices angezeigt wird.

TF-Vorabtests für lokale Änderungen ausführen

Wenn Sie eine ähnliche Ausführung wie bei der TF-Voreinreichung wünschen, verwenden Sie Folgendes:

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

Dadurch werden alle Presubmit-Tests für TF auf Ihrem lokal erstellten TF ausgeführt, damit Sie prüfen können, ob Ihre Änderung keine Tests bricht.

TF-Vorabtests sind eine Supermenge der oben genannten Unit-Tests, ihre Ausführung ist jedoch langsamer. Daher wird empfohlen, die Unittests während der Entwicklung auszuführen, um eine schnellere Validierung zu ermöglichen, und die Presubmits auszuführen, bevor die CL hochgeladen wird.