Unit- und Funktionstests einschließen

In diesem Abschnitt wird erläutert, wie Sie die Trade Federation-Tests ausführen und nach einer Änderung am Projekt dazu beitragen können. Sie beinhalten die folgenden Funktionen:

  • 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
  • Einen Teil der Vorabprüfung von TensorFlow lokal ausführen

Einheitentests 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 Ihre neuen Klassen für den Unit-Test an diesen Stellen hinzufügen, werden sie automatisch im Presubmit-Modus ausgeführt, ohne dass eine zusätzliche Einrichtung erforderlich ist.

Unittests 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 Einheitentests 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 Console:

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 (eine 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 starten Sie Eclipse über eine Shell-Konfiguration mit dem richtigen PATH.
  2. Erstellen Sie eine Java-Anwendung. Konfiguration über Ausführen > Konfigurationen ausführen ausführen
  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. Build Trade Federation
  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 den Test ähnlich wie den TF-Vorab-Befehl ausführen möchten, 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.