À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Structure d'un lanceur de test
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Le lanceur de test est l'unité d'exécution du flux d'invocation. C'est là que les tests sont exécutés.
Interfaces
Les outils d'exécution des tests sont définis via l'interface IRemoteTest, qui fournit une méthode run
simple à implémenter qui sera appelée lorsque les tests seront exécutés.
Cela permet de définir la version la plus simple d'une exécution de test. En pratique, les rédacteurs de tests ont besoin d'informations supplémentaires pour écrire correctement leurs tests, généralement des informations sur la compilation et l'appareil. C'est là que les interfaces suivantes s'avèrent utiles.
Standard
Ces deux interfaces sont les plus utilisées aujourd'hui, car elles représentent les besoins de base de la plupart des tests.
- IBuildReceiver permet au test d'obtenir l'objet
IBuildInfo
créé à l'étape du fournisseur de compilation contenant toutes les informations et tous les artefacts liés à la configuration du test.
- IDeviceTest permet à TF de recevoir l'objet
ITestDevice
qui représente l'appareil en cours de test et fournit une API pour interagir avec lui.
Avancé
D'autres interfaces permettent une interaction plus complexe entre le banc d'essais et le lanceur de tests:
- ITestFilterReceiver, qui permet au test de recevoir un ensemble de filtres pour exécuter uniquement certains tests. Cela est utile pour exécuter un sous-ensemble des tests.
- ITestCollector, qui permet à un exécuteur de test de ne simuler que les tests au lieu de les exécuter réellement. Cela permet de collecter la liste de tous les scénarios de test.
Exécuteurs de test existants
Il existe déjà différents outils de test, certains pour les principaux types de tests:
En plus de ce qui précède, il existe un grand nombre de lanceurs de tests personnalisés. Ils servent à des fins spécialisées pour certains tests fonctionnels, par exemple le test de démarrage.
Écrire un nouveau lanceur de test
Pour obtenir des conseils supplémentaires sur l'écriture d'un nouveau lanceur de tests, consultez la section Écrire des tests.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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)."]]