단위 및 기능 테스트 포함

이 섹션에서는 프로젝트를 변경한 후 Trade Federation 테스트를 실행하고 테스트에 기여하는 방법을 설명합니다. 여기에는 다음이 포함됩니다.

  • 새 단위 테스트 클래스 추가 위치
  • Eclipse 및 Eclipse IDE 외부에서 단위 테스트 실행
  • 기능 테스트 추가 위치
  • 기능 테스트 실행
  • 로컬에서 일부 TF 사전 제출 검사 실행

단위 테스트 추가

Android 오픈소스 프로젝트(AOSP)에서 단위 테스트 클래스를 tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java에 추가합니다.

중요: 이러한 위치에 새 단위 테스트 클래스를 추가하면 추가 설정 없이 사전 제출에서 자동으로 실행됩니다.

단위 테스트 실행

Trade Federation의 모든 AOSP 단위 테스트와 기능 테스트는 tools/tradefederation/core/tests 프로젝트에 있습니다.

Eclipse 내에서 개별 단위 테스트를 실행하려면 테스트를 마우스 오른쪽 버튼으로 클릭하고 Run As: > JUnit을 선택하기만 하면 됩니다. 모든 단위 테스트를 실행하려면 com.android.tradefed.UnitTests 도구 모음을 실행합니다.

tools/tradefederation/core/javatests/run_tradefed_tests.sh처럼 빌드 이후에 Tradefed 소스 트리의 명령줄에서 단위 테스트를 시작할 수도 있습니다.

단위 테스트는 독립형으로 실행할 수 있지만 기능 테스트는 Trade Federation 자체를 사용하여 실행해야 하며 Android 기기가 필요합니다. 모든 기능 테스트는 이름 지정 규칙 *FuncTest를 따라야 합니다.

단위 테스트 결과 확인

run_tradefed_tests.sh를 실행할 때 단위 테스트는 일부 오류 조건을 포함하여 테스트 하네스의 모든 부분을 실행합니다. 스택 트레이스를 비롯하여 상세한 출력을 콘솔에 인쇄합니다.

결과의 최종 요약에는 실패가 발생했는지 표시됩니다.

콘솔에서의 최종 요약 예:

12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]

모든 테스트는 통과를 목표로 하므로 로컬 변경사항에서 실패가 발생하면 테스트를 수정하세요.

기능 테스트 추가

  • 기능 테스트에 ITestDevice API를 사용하는 기기가 포함되면 도구 모음 정의는 com.android.tradefed.DeviceFuncTests에 있습니다. 그 외 경우에는 도구 모음 정의가 com.android.tradefed.FuncTests에 있습니다.

  • 테스트 메서드를 기존 도구 모음 서브클래스 중 하나에 넣는 것이 적합하다면 서브클래스에 추가하는 것이 좋습니다. 적합하지 않으면 적용되는 도구 모음에 새 클래스를 자유롭게 추가합니다.

  • 어떤 경우든 도구 모음에 추가하면 테스트가 다른 기능 테스트와 함께 CI 파이프라인에서 자동으로 실행됩니다.

기능 테스트 실행

Eclipse에서 기능 테스트를 실행하는 방법:

  1. 기기가 호스트 및 adb에 연결되었는지 확인하고 필요한 경우 fastboot가 Eclipse의 경로에 있는지 확인합니다. 가장 쉬운 방법은 셸 설정에서 적절한 경로를 사용하여 Eclipse를 실행하는 것입니다.
  2. Java 애플리케이션을 생성합니다. Run > Run configurations를 통해 구성을 실행합니다.
  3. 프로젝트를 tradefed-tests로, 기본 클래스를 com.android.tradefed.command.CommandRunner로 설정합니다.
  4. m tradefed-all을 실행합니다.
  5. 명령줄 인수 host --class <full path of test class to run>Arguments 탭에 제공합니다.
  6. Run을 클릭합니다.

Eclipse 외부에서 기능 테스트를 실행하는 방법:

  1. Trade Federation을 빌드합니다.
  2. Android 기기를 호스트에 연결합니다.
  3. tools/tradefederation/core/javatests/run_tradefed_func_tests.sh를 실행합니다.
  4. 원하는 경우 adb devices의 출력에 표시되는 --serial <serial no>를 추가하여 기기를 선택합니다.

로컬 변경사항에 TF 사전 제출 테스트 실행

TF 사전 제출과 유사한 방식으로 실행하려면 다음을 사용하세요.

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

그러면 변경사항으로 인해 중단되는 테스트가 없는지 확인할 수 있도록 로컬에서 빌드한 TF에 모든 TF 사전 제출 테스트가 트리거됩니다.

TF 사전 제출 테스트는 위에서 언급한 단위 테스트의 상위 집합이지만 실행 속도가 훨씬 느립니다. 따라서 개발 도중에 단위 테스트를 실행하여 빠르게 검증하고 CL을 업로드하기 전에 사전 제출을 실행하는 것이 좋습니다.