Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Struktur eines Testlaufs
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Der Test-Runner ist die Ausführungseinheit des Aufrufvorgangs. Hier werden die Tests tatsächlich ausgeführt.
Schnittstellen
Testläufer werden über die IRemoteTest-Schnittstelle definiert. Diese bietet eine einfache run
-Methode, die implementiert werden kann und aufgerufen wird, wenn die Tests ausgeführt werden sollen.
So lässt sich eine Testausführung am einfachsten definieren. In der Praxis benötigen die Testentwickler jedoch mehr Informationen, um ihre Tests richtig zu schreiben, in der Regel Build- und Geräteinformationen. Hier kommen die folgenden Schnittstellen ins Spiel.
Allgemein
Diese beiden Schnittstellen werden heute am häufigsten verwendet, da sie die grundlegenden Anforderungen der meisten Tests erfüllen.
- Mit IBuildReceiver kann der Test das
IBuildInfo
-Objekt abrufen, das im Schritt BuildProvider erstellt wurde und alle Informationen und Artefakte zur Testeinrichtung enthält.
- Mit IDeviceTest kann TF das
ITestDevice
-Objekt empfangen, das das zu testende Gerät darstellt, und eine API für die Interaktion damit bereitstellen.
Erweitert
Es gibt zusätzliche Schnittstellen, die eine komplexere Interaktion zwischen dem Test-Harness und dem Test-Runner ermöglichen:
- ITestFilterReceiver, über den der Test nur eine Reihe von Filtern zum Ausführen bestimmter Tests erhält. Dies ist nützlich, wenn Sie einen Teil der Tests ausführen möchten.
- ITestCollector, mit dem ein Test-Runner die Tests nur als Trockenlauf ausführen kann, anstatt sie tatsächlich auszuführen. Dies ist hilfreich, um eine Liste aller Testfälle zu erstellen.
Vorhandene Testläufer
Es gibt bereits eine Vielzahl von Testläufern, einige für die wichtigsten Testtypen:
Neben den oben genannten gibt es eine große Anzahl benutzerdefinierter Testläufer, die für bestimmte Funktionstests verwendet werden, z. B. Boot-Tests.
Neuen Test-Runner schreiben
Weitere Informationen zum Erstellen eines neuen Test-Runners finden Sie im Abschnitt Tests schreiben.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Structure of a test runner\n\nThe test runner is the execution unit of the invocation flow. This is where\ntests actually run.\n\nInterfaces\n----------\n\nTest runners are defined via the [IRemoteTest\ninterface](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/invocation_interfaces/com/android/tradefed/testtype/IRemoteTest.java),\nwhich provides a simple `run` method to implement that will be called when the\ntests is to run.\n\nThis allows the simplest definition of a test run to occur. But in practice,\ntest writers will need more information to properly write their tests, typically\nbuild and device information. This is where the following interfaces come handy.\n\n### Basic\n\nThese two interfaces are the most widely used today, as they represent the basic\nneeds of most tests.\n\n- [IBuildReceiver](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/testtype/IBuildReceiver.java) allows the test to get the `IBuildInfo` object created at the [build\n provider](/docs/core/tests/tradefed/architecture/build-provider) step containing all the information and artifacts related to the test setup.\n- [IDeviceTest](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/testtype/IDeviceTest.java) allows TF to receive the `ITestDevice` object that represents the device under test and provides an API to interact with it.\n\n### Advanced\n\nThere are additional interfaces that allow more complex interaction between the\ntest harness and the test runner:\n\n- [ITestFilterReceiver](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/testtype/ITestFilterReceiver.java), which allows the test to receive a set of filters for running certain tests only. This is useful in running a subset of the tests.\n- [ITestCollector](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/src/com/android/tradefed/testtype/ITestCollector.java), which allows a test runner to only dry-run the tests instead of actually executing them. This is useful in collecting the list of all test cases.\n\nExisting test runners\n---------------------\n\nA variety of test runners already exists, some for major test types:\n\n- [AndroidJUnitTest / InstrumentationTest](/reference/tradefed/com/android/tradefed/testtype/AndroidJUnitTest) (associated with AJUR on the device side)\n- [GTest](/reference/tradefed/com/android/tradefed/testtype/GTest) (device and host side) with [googletest library](https://github.com/google/googletest)\n- [Host-driven\n tests](/reference/tradefed/com/android/tradefed/testtype/HostTest) (Java tests that execute on the host and call the device from there)\n- [Pure Java unit\n tests](/reference/tradefed/com/android/tradefed/testtype/HostTest) (our runner does both)\n- [Python tests](/reference/tradefed/com/android/tradefed/testtype/python/PythonBinaryHostTest)\n- [Google Benchmark\n tests](/reference/tradefed/com/android/tradefed/testtype/GoogleBenchmarkTest) with [benchmark library](https://github.com/google/benchmark)\n\nA large number of custom test runners exist besides the above; they serve\nspecialized purposes for some functional testing, for example Boot Test.\n\nWrite a new test runner\n-----------------------\n\nMore guidance of writing a new test runner is available in the [writing tests\nsection](/docs/core/tests/tradefed/testing/through-tf/new-test-runner)."]]