네이티브 테스트

일반적으로 플랫폼의 네이티브 테스트는 하위 수준 HAL에 액세스하거나 다양한 시스템 서비스를 대상으로 원시 IPC를 실행합니다. 따라서, 테스트 접근 방식은 일반적으로 테스트 중인 서비스와 밀접한 관련이 있습니다.

gtest 프레임워크를 사용하여 네이티브 테스트를 빌드합니다. 이는 지속적인 테스트 인프라와 통합하기 위한 전제 조건입니다.

다음은 플랫폼 소스의 네이티브 테스트 예제입니다.

단계 요약

  1. frameworks/base/libs/hwui/tests/unit/에서 샘플 네이티브 테스트 모듈 설정을 확인합니다.
  2. gtest 종속 항목이 자동으로 포함되도록 테스트 모듈 구성에는 BUILD_NATIVE_TEST 빌드 규칙을 사용해야 합니다.
  3. 테스트 구성을 작성합니다. 간단한 옵션과 복잡한 옵션을 확인하세요.
  4. 증분 빌드인지 전체 빌드인지에 따라 mmm 또는 mma를 사용하여 테스트 모듈을 빌드합니다. 예를 들면, 다음과 같습니다.

    make hwui_unit_tests -j
    
  5. Atest를 사용하여 로컬에서 테스트를 실행합니다.

    atest hwui_unit_tests
    
    1. 네이티브 테스트에 인수를 추가할 수도 있습니다. 특히 유용한 플래그로는 네이티브 테스트의 셸 명령어에 전달할 추가 플래그 값을 지정하는 native-test-flag와 마이크로초 단위로 테스트 시간 제한을 지정할 수 있는 native-test-timeout이 있습니다.

      atest test-name -- --module-arg test-name:native-test-flag:"\"argument1 argument2\"" \
      --module-arg test-name:native-test-timeout:60000
      
  6. Trade Federation 테스트 하네스를 사용하여 테스트를 실행합니다.

    make tradefed-all -j
    tradefed.sh run template/local_min --template:map test=hwui_unit_tests
    
  7. 수동으로 설치 및 실행합니다.

    1. 생성된 테스트 바이너리를 기기로 푸시합니다.

      adb push ${OUT}/data/nativetest/hwui_unit_tests/hwui_unit_tests \
        /data/nativetest/hwui_unit_tests/hwui_unit_tests
      
    2. 기기에서 테스트 바이너리를 호출하여 테스트를 실행합니다.

      adb shell /data/nativetest/hwui_unit_tests/hwui_unit_tests
      

    그러면 네이티브 테스트가 실행됩니다. 테스트 바이너리에 --help 매개변수를 추가하여 테스트 실행을 맞춤설정하는 다양한 방법을 알아볼 수도 있습니다. 마지막으로, gtest 고급 가이드에서 더 많은 매개변수와 용도를 확인하세요.