2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
결과 보고자 만들기
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
이 페이지에서는 새 결과 보고자를 구현하여 테스트에 맞게 구성하는 기본적인 방법을 설명합니다.
핵심 인터페이스
Tradefed에서 새 결과 보고자를 정의하려면 클래스가 호출의 여러 단계를 수신하고 처리할 수 있게 해주는 ITestInvocationListener
를 구현해야 합니다.
invocationStarted
invocationEnded
invocationFailed
결과 보고자는 각 테스트 실행의 여러 단계 또한 처리합니다.
testRunStarted
testStarted
testFailed
또는 testIgnored
testEnded
testRunFailed
testRunEnded
이러한 모든 이벤트를 감안했을 때, 다음과 같은 두 가지 유형의 결과 보고자가 있습니다.
- 온전한 최종 결과를 보고하는 일에만 관심이 있음
- 부분 결과에 대한 작업을 수행
온전한 최종 결과를 보고하는 결과 보고자
결과를 수신하는 외부 서비스와 상호작용하는 일에 관해서는 이 유형이 가장 일반적인 경우입니다. 보고자는 단순히 결과를 수신하여 누적한 다음 invocationEnded
시 모두 결과 종료점으로 전송합니다.
이러한 보고자는 invocationEnded
까지 결과 저장 및 보관의 재구현을 방지하기 위해 기본 인터페이스 대신 CollectingTestListener
를 확장하는 것이 좋습니다.
부분 결과를 보고하는 결과 보고자
이 유형은 보통 결과의 스트리밍 접근 방식 즉, 수신된 결과가 다른 위치로 즉시 푸시되는 경우에 사용됩니다. 예를 들어 콘솔에 결과를 로깅하는 보고자가 이 유형이 됩니다.
이 유형은 이벤트에 어떤 처리 유형이 요구되는지와 관련이 있습니다. 따라서 일반적인 경우에는 기본 인터페이스를 구현하는 것이 좋습니다.
XML 구성
객체 태그는 result_reporter
입니다. 예를 들면 다음과 같습니다.
<result_reporter class="com.android.tradefed.result.ConsoleResultReporter">
<option name="suppress-passed-tests" value="true"/>
</result_reporter>
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Create a result reporter\n\nThis page describes the basics of how to implement a new result reporter and\nconfigure it for a test.\n\nCore interface\n--------------\n\nIn order to define a new result reporter in Tradefed, a class must implement\nthe\n[`ITestInvocationListener`](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/invocation_interfaces/com/android/tradefed/result/ITestInvocationListener.java)\ninterface that allows receiving and handling different stages of the\ninvocation:\n\n- `invocationStarted`\n- `invocationEnded`\n- `invocationFailed`\n\nResult reporters also handle the different stages of each test run:\n\n- `testRunStarted`\n- `testStarted`\n- `testFailed` or `testIgnored`\n- `testEnded`\n- `testRunFailed`\n- `testRunEnded`\n\nGiven all these events, there are two main types of result reporters, those that:\n\n- Care only about reporting the final complete results.\n- Take action on partial results.\n\n### Result reporter that reports final complete results\n\nThis type is the most common case when it comes to interacting with an external\nservice that receives the results. The reporter simply receives and accumulates\nthe results and then sends them all on `invocationEnded` to the result end-point.\n\nWe recommend that those reporters extend `CollectingTestListener` instead\nof the base interface in order to avoid reimplementing saving and storing the\nresults until `invocationEnded`.\n\n### Result reporter that reports partial results\n\nThis type is usually used for a streaming approach of the results, when results\nare received and pushed to some other places right away. For example, a reporter\nthat logs the results to the console would be of this type.\n\nThis type is specific to which type of handling is required on the events,\nso implementing the base interface is usually the recommended way.\n\n### XML configuration\n\nThe object tag is `result_reporter`. For example: \n\n \u003cresult_reporter class=\"com.android.tradefed.result.ConsoleResultReporter\"\u003e\n \u003coption name=\"suppress-passed-tests\" value=\"true\"/\u003e\n \u003c/result_reporter\u003e"]]