이 페이지에서

androidtestrunner 도구

소개

androidtestrunner 도구는 Android 기기 및 에뮬레이터에서 Qt Test를 실행합니다. 이 도구는 APK 설치 관리, 테스트 실행, 결과 수집 등 테스트 실행에 필요한 단계를 자동화합니다.

androidtestrunner 를 사용하기 전에, CMake 또는 qmake를 사용하여 Qt Test 프로젝트를 구성했는지 확인하십시오.

작동 원리

  1. 먼저, APK 빌드 명령을 실행하여 테스트에 필요한 APK를 생성합니다.
  2. 그 후, 대상 기기에 테스트 앱을 설치하고 테스트 앱을 실행하여 테스트 프로세스를 시작합니다.
  3. 테스트 결과는 기기의 앱 데이터 디렉터리에 기록되어 포괄적인 테스트 결과가 확보됩니다.
  4. 테스트가 완료되면 러너는 결과 파일 옆에 종료 코드 파일을 작성합니다.
  5. 이 단계에서 테스트 관리자( androidtestrunner )는 기기에서 이러한 결과 파일을 가져와 종료 코드를 검토하여 오류 여부를 확인합니다.
  6. 문제가 감지되면, 잠재적인 크래시 스택 트레이스를 포함하여 앱의 logcat 로그를 즉시 출력하며, 각 프레임의 파일 이름과 줄 번호가 명확하게 표시되도록 정렬됩니다. 또한, 테스트 실행 중에 '애플리케이션이 응답하지 않음(ANR)' 이벤트가 발생하면 해당 로그를 캡처하여 보고합니다.

통합 경험을 향상시키기 위해, 테스트 실행기는 테스트 실행기 프로세스의 호스트 환경에서 QT 또는 Qt Test 환경 변수를 앱으로 전달하여 일관성과 원활한 테스트 워크플로를 보장합니다.

테스트 래퍼를 사용하여 테스트 실행하기

Qt는 각 Android 테스트와 함께 (테스트 대상의 이름을 따서 명명된) 대상별 래퍼 스크립트를 생성합니다. 이 스크립트는 올바른 경로를 사용하여 ` androidtestrunner `를 호출하고, 추가 인수를 테스트 바이너리로 전달합니다. 아래 예제는 특정 에뮬레이터에서 ` tst_android `를 실행하고, Qt 환경 변수를 전달하며, ` testAssets ` 테스트 케이스만 실행합니다:

ANDROID_SERIAL=emulator-5554 QT_DEBUG_PLUGINS=1 ./tst_android testAssets

결과 가져오기

기본적으로, 테스트의 stdout 출력이 명시적으로 비활성화되지 않은 경우, 테스트가 실행되는 동안 테스트 결과가 호스트에 출력됩니다. 테스트 실행이 완료되면, 명시적으로 요청된 테스트 파일은 각기 해당 형식으로 지정된 출력 경로에 저장됩니다.

Qt Test 프레임워크에 대한 자세한 내용은 Qt Test Overview를 참조하십시오.

사용 방법

androidtestrunner 를 실행하는 기본 구문은 다음과 같습니다:

androidtestrunner [ARGUMENTS] -- [TESTARGS]

특정 기기/에뮬레이터에서 테스트를 실행하려면 ` --serial <serial> `을 전달하거나 ` adb ` 환경 변수를 설정하십시오( ANDROID_SERIAL 또는 ANDROID_DEVICE_SERIAL). 명시적인 옵션이 우선 적용됩니다.

필수 인수

테스트 실행기는 항상 다음 인수가 전달되기를 기대합니다:

  • --path <build-path>: Android Gradle 패키지가 빌드된 경로입니다. 일반적으로 <build-dir>/android-build-<target> 입니다.
  • --make <build-command>: 테스트 APK를 빌드하는 데 사용되는 명령어입니다. 예: cmake --build <build-dir> --target <target>_make_apk.

    참고: 이 인수는 테스트 실행기의 여러 인수로 처리되지 않고 --make 인수의 값으로 인식되도록 따옴표로 묶어전달해야 합니다.

  • 다음 중 하나:
    • --apk <apk-path>: 빌드 명령어로 생성되어 기기에 설치된 테스트 APK의 경로.
    • --aab <aab-path>: 테스트 AAB의 경로; --bundletool 가 필요합니다. 두 옵션을 동시에 설정할 수 없으며, 어느 쪽도 두 번 이상 지정할 수 없습니다.

선택적 인수

다음과 같은 선택적 인수를 전달할 수도 있습니다:

  • --bundletool <path>: Android bundletool jar 파일의 경로입니다. --aab 를 사용할 때 필수입니다.
  • --manifest <path>: 사용자 정의 AndroidManifest.xml 경로. 기본값은 빌드 경로 또는 해당 경로의 app/ 하위 디렉터리에서 발견된 파일입니다.
  • --adb <adb-path>: 사용자 정의 ADB 명령 경로를 지정합니다. 기본값은 시스템의 $PATH 디렉터리에 있는 adb 경로입니다.
  • --serial <serial>: 대상 Android 기기의 일련 번호입니다. ANDROID_SERIAL 및 ANDROID_DEVICE_SERIAL 설정을 재정의합니다.
  • --activity <activity-name>: 실행할 사용자 정의 액티비티를 지정합니다. 기본값은 AndroidManifest.xml 에 정의된 첫 번째 액티비티입니다.
  • --timeout <seconds>: 테스트 실행 시간 제한을 설정합니다. 기본값은 600초(10분)입니다.
  • --pre-test-adb-command <command>: 설치 후 및 테스트 실행 전에 adb <command> 를 호출합니다. 여러 번 전달할 수 있습니다.
  • --skip-install-root: 빌드 명령어가 make-family 도구(make, gmake, nmake, mingw32-make, jom; 대소문자 구분 없이 일치)일 때, --make 에 자동으로 추가되는 INSTALL_ROOT=<path> install 접미사를 생략합니다. cmake, ninja 또는 기타 빌드 드라이버의 경우 이 접미사가 절대 추가되지 않으므로, 이 옵션은 나열된 도구에서만 효과가 있습니다.
  • --ndk-stack <command-path>: 크래시 스택 트레이스를 심볼화하는 ndk-stack 도구의 경로를 지정합니다. 기본값은 $ANDROID_NDK_ROOT 아래에 있는 도구 경로입니다.
  • --show-logcat: 테스트 실패 여부와 관계없이 logcat 출력을 stdout으로 출력합니다. main, system 및 crash 버퍼를 읽으며, ANR이 감지되면 system_server 줄을 포함합니다.
  • --verbose: 상세 출력을 표시합니다.
  • -- <arguments>: 대시(-) 뒤의 모든 내용을 테스트 인수로 전달합니다.
  • --help: 도움말 정보를 표시합니다.

사용 예시

다음은 ` tst_android ` 테스트를 실행하고, ` testAssets ` 테스트 케이스만 실행하는 예시입니다:

androidtestrunner \
    --path ~/tst_android/build/android-build-tst_openssl \
    --make "cmake --build ~/tst_android/build --target apk" \
    --apk ~/tst_android/build/android-build-tst_openssl/tst_openssl.apk \
    testAssets

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.