En esta página, se describen los conceptos básicos de cómo implementar un nuevo generador de informes de resultados y configurarlo para una prueba.
Interfaz principal
Para definir un nuevo generador de informes de resultados en Tradefed, una clase debe implementar la interfaz ITestInvocationListener
que permite recibir y controlar diferentes etapas de la invocación:
invocationStarted
invocationEnded
invocationFailed
Los generadores de informes de resultados también controlan las diferentes etapas de cada ejecución de prueba:
testRunStarted
testStarted
testFailed
otestIgnored
testEnded
testRunFailed
testRunEnded
Teniendo en cuenta todos estos eventos, hay dos tipos principales de generadores de informes de resultados: aquellos que:
- Solo debes informar los resultados finales completos.
- Toma medidas sobre los resultados parciales.
Generador de informes de resultados que informa los resultados finales completos
Este tipo es el caso más común cuando se trata de interactuar con un servicio externo que recibe los resultados. El generador de informes solo recibe y acumula los resultados y, luego, los envía todos en invocationEnded
al extremo de resultados.
Recomendamos que esos generadores de informes extiendan CollectingTestListener
en lugar de la interfaz base para evitar volver a implementar el guardado y el almacenamiento de los resultados hasta invocationEnded
.
Generador de informes de resultados que informa resultados parciales
Por lo general, este tipo se usa para un enfoque de transmisión de los resultados, cuando estos se reciben y se envían a otros lugares de inmediato. Por ejemplo, un generador de informes que registra los resultados en la consola sería de este tipo.
Este tipo es específico para el tipo de control que se requiere en los eventos, por lo que se suele recomendar la implementación de la interfaz base.
Configuración de XML
La etiqueta del objeto es result_reporter
. Por ejemplo:
<result_reporter class="com.android.tradefed.result.ConsoleResultReporter">
<option name="suppress-passed-tests" value="true"/>
</result_reporter>