创建新的结果报告程序

本部分介绍如何实现新的结果报告程序并针对测试对其进行配置的基础知识。

核心接口

为了在 Tradefed 中定义新的结果报告程序,一个类必须实现 ITestInvocationListener 接口,该接口允许接收和处理调用的不同阶段:

  • invocationStarted
  • invocationEnded
  • invocationFailed

结果报告程序还处理每个测试运行的不同阶段:

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

考虑到所有这些事件,结果报告程序主要有两种类型,其特点分别是:

  • 只关心报告最终完整结果。
  • 对部分结果执行操作。

报告最终完整结果的结果报告程序

当涉及到与接收结果的外部服务进行交互时,此类型是最常见的情况。此类报告程序只是接收并累积结果,然后在 invocationEnded 时将结果全部发送到结果端点。

建议此类报告程序扩展 CollectingTestListener 而不是基接口,以避免在 invocationEnded 之前重复实现结果的保存和存储。

报告部分结果的结果报告程序

当接收结果并立即将其推送到其他一些位置时,此类型通常用于结果的流式传输方法。例如,将结果记录到控制台的报告程序就属于此类型。

此类型特定于需要对事件进行哪种类型的处理,因此通常建议实现基接口。

XML 配置

对象标记将为 result_reporter。例如:

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