Créer un rapporteur de résultats

Cette page explique les principes de base de l'implémentation d'un nouveau rapporteur de résultats et de sa configuration pour un test.

Interface principale

Pour définir un nouveau rapporteur de résultats dans Tradefed, une classe doit implémenter l'interface ITestInvocationListener qui permet de recevoir et de gérer les différentes étapes de l'appel:

  • invocationStarted
  • invocationEnded
  • invocationFailed

Les outils de création de rapports sur les résultats gèrent également les différentes étapes de chaque exécution de test:

  • testRunStarted
  • testStarted
  • testFailed ou testIgnored
  • testEnded
  • testRunFailed
  • testRunEnded

Compte tenu de tous ces événements, il existe deux principaux types de rapporteurs de résultats:

  • Ne vous préoccupez que de générer les résultats finaux complets.
  • Agir sur les résultats partiels

Rapport sur les résultats finaux finaux

Ce type est le cas le plus courant lorsqu'il s'agit d'interagir avec un service externe qui reçoit les résultats. Le rapporteur reçoit et accumule simplement les résultats, puis les envoie tous sur invocationEnded au point de terminaison des résultats.

Nous recommandons à ces reporters d'étendre CollectingTestListener au lieu de l'interface de base afin d'éviter de réimplémenter l'enregistrement et le stockage des résultats jusqu'à invocationEnded.

Outil de création de rapports qui génère des résultats partiels

Ce type est généralement utilisé pour une approche de streaming des résultats, lorsque les résultats sont reçus et transférés immédiatement vers d'autres emplacements. Par exemple, un rapporteur qui consigne les résultats dans la console est de ce type.

Ce type est spécifique au type de gestion requis pour les événements. Il est donc généralement recommandé d'implémenter l'interface de base.

Configuration XML

La balise de l'objet est result_reporter. Exemple :

<result_reporter class="com.android.tradefed.result.ConsoleResultReporter">
    <option name="suppress-passed-tests" value="true"/>
</result_reporter>