A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Estructura de un ejecutor de pruebas
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
El ejecutor de pruebas es la unidad de ejecución del flujo de invocación. Aquí es donde
se ejecutan las pruebas.
Interfaces
Los ejecutores de pruebas se definen a través de la interfaz IRemoteTest, que proporciona un método run
simple para implementar que se llamará cuando se ejecuten las pruebas.
Esto permite que se produzca la definición más simple de una ejecución de prueba. Sin embargo, en la práctica, quienes escriben pruebas necesitarán más información para escribirlas correctamente, por lo general, información de compilación y del dispositivo. Aquí es donde las siguientes interfaces resultan útiles.
Básico
Estas dos interfaces son las más utilizadas en la actualidad, ya que representan las necesidades básicas
de la mayoría de las pruebas.
- IBuildReceiver permite que la prueba obtenga el objeto
IBuildInfo
creado en el paso proveedor de compilación que contiene toda la información y los artefactos relacionados con la configuración de la prueba.
- IDeviceTest permite que TF reciba el objeto
ITestDevice
que representa el dispositivo en prueba y proporciona una API para interactuar con él.
Avanzado
Existen interfaces adicionales que permiten una interacción más compleja entre el conjunto de pruebas y el ejecutor de pruebas:
- ITestFilterReceiver, que permite que la prueba reciba un conjunto de filtros para ejecutar solo ciertas pruebas. Esto es útil para ejecutar un subconjunto de las pruebas.
- ITestCollector, que permite que un ejecutor de pruebas solo realice pruebas de ejecución en lugar de ejecutarlas. Esto es útil para recopilar la lista de todos los casos de prueba.
Ejecutores de pruebas existentes
Ya existe una variedad de ejecutores de pruebas, algunos para los tipos de pruebas principales:
Además de los anteriores, existe una gran cantidad de ejecutores de pruebas personalizados que cumplen con fines especializados para algunas pruebas funcionales, como la prueba de inicio.
Cómo escribir un nuevo ejecutor de pruebas
Hay más orientación para escribir un nuevo ejecutor de pruebas en la sección de pruebas de escritura.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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)."]]