단순 빌드 구성

새로운 각 테스트 모듈에는 모듈 메타데이터, 컴파일 시간 종속 항목 및 패키징 지침으로 빌드 시스템을 안내할 구성 파일이 있어야 합니다. Android는 이제 간단한 테스트 구성을 위해 Soong 빌드 시스템을 사용합니다.

Soong은 Blueprint 또는 .bp 파일을 사용하며, 이러한 파일은 빌드할 모듈의 단순한 선언적 설명인 JSON과 비슷합니다. 이 형식은 이전 버전에서 사용했던 Make 기반 시스템을 대체합니다. 자세한 내용은 지속적 통합 대시보드Soong 참조 파일을 참고하세요.

맞춤 테스트를 사용하거나 Android 호환성 테스트 모음(CTS)을 사용하려면 복잡한 테스트 구성을 참고하세요.

아래 항목은 이 예의 Blueprint 구성 파일에서 가져온 것입니다. (/platform_testing/tests/example/instrumentation/Android.bp)

편의를 위해 여기에 개요가 포함되어 있습니다.

android_test {
    name: "HelloWorldTests",
    srcs: ["src/**/*.java"],
    sdk_version: "current",
    static_libs: ["androidx.test.runner"],
    certificate: "platform",
    test_suites: ["device-tests"],
}

android_test 선언은 처음에 테스트임을 나타냅니다. 반대로 android_app을 포함하면 빌드 패키지임을 나타냅니다.

설정

다음과 같은 설정 설명이 표시됩니다.

    name: "HelloWorldTests",

android_test 모듈 유형이 지정된 경우 블록 시작 부분에 name 설정이 필요합니다. 이 설정으로 모듈의 이름이 지정되고 결과 APK 이름은 모듈 이름과 동일하며 접미사 .apk가 붙습니다. 예를 들어, 테스트 결과 APK의 이름은 HelloWorldTests.apk입니다. 또한, 이 설정은 모듈의 make 타겟 이름도 정의하므로 make [options] <HelloWorldTests>를 사용하여 테스트 모듈 및 모든 종속 항목을 빌드할 수 있습니다.

    static_libs: ["androidx.test.runner"],

static_libs 설정은 이름이 지정된 모듈의 콘텐츠를 현재 모듈의 결과 APK에 통합하도록 빌드 시스템에 지시합니다. 즉, 이름이 지정된 각 모듈은 .jar 파일을 생성하며 이 파일의 콘텐츠는 컴파일 시간에 classpath 참조를 확인하는 데 사용되고 결과 APK에 통합됩니다.

androidx.test.runner 모듈은 테스트 실행기 AndroidJUnitRunner가 포함된 AndroidX 테스트 실행자 라이브러리용으로 사전 빌드되었습니다. AndroidJUnitRunner는 JUnit4 테스트 프레임워크를 지원하고 Android 10에서 InstrumentationTestRunner를 대체합니다. Android에서 앱 테스트에서 Android 앱 테스트에 관해 자세히 알아보세요.

새 계측 모듈을 빌드한다면 항상 테스트 실행자로 androidx.test.runner 라이브러리를 사용하여 시작해야 합니다. 플랫폼 소스 트리에는 ub-uiautomator, mockito-target, easymock 등과 같은 다른 유용한 테스트 프레임워크도 포함됩니다.

    certificate: "platform",

certificate 설정은 빌드 시스템이 코어 플랫폼과 동일한 인증서를 사용하여 APK에 서명하도록 지시합니다. 테스트가 서명으로 보호된 권한 또는 API를 사용하는 경우 필요합니다. 이는 플랫폼 연속 테스트에 적합하지만, CTS 테스트 모듈에는 사용하면 안 됩니다. 이 예에서는 설명하는 용도로만 인증서 설정을 사용합니다. 이 예의 테스트 코드는 테스트 APK를 특수 플랫폼 인증서로 서명하지 않아도 됩니다.

시스템 서버 외부에 존재하는 구성요소의 계측을 작성하는 경우(즉, 시스템 이미지에 내장되어 있으며 권한이 부여된 앱일 수도 있는 것을 제외하고 일반 앱 APK와 거의 비슷하게 패키징됨) 계측이 구성요소의 앱 패키지를 타겟팅할 가능성이 있습니다. 자세한 내용은 아래 매니페스트 섹션을 참고하세요. 이 경우 애플리케이션 Makefile에 자체 certificate 설정이 있을 수 있고 계측 모듈에서 동일한 설정을 유지해야 합니다. 테스트 중인 앱에서 계측을 타겟팅하려면 테스트 APK와 앱 APK가 동일한 인증서로 서명되어야 하기 때문입니다.

그렇지 않은 경우, 이 설정이 전혀 필요하지 않습니다. 빌드 시스템은 빌드 변형에 따라 단순히 내장된 기본 인증서로 서명하며 일반적으로 dev-keys라고 합니다.

    test_suites: ["device-tests"],

test_suites 설정을 사용하면 Trade Federation 테스트 하네스에서 테스트를 쉽게 찾을 수 있습니다. 이 테스트를 공유할 수 있도록 CTS와 같은 다른 테스트 모음을 여기에 추가할 수 있습니다.

${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk

설정(선택 사항)

다음은 선택 가능한 설정에 관한 설명입니다.

    test_config: "path/to/hello_world_test.xml"

test_config 설정은 테스트 타겟에 특정 구성이 필요하다고 빌드 시스템에 지시합니다. 기본적으로, Android.bp 옆의 AndroidTest.xml은 구성과 연결됩니다.

    auto_gen_config: true

auto_gen_config 설정은 테스트 구성을 자동으로 만들지를 나타냅니다. Android.bp 옆에 AndroidTest.xml이 없으면 이 속성에 명시적으로 true를 설정할 필요가 없습니다.

    require_root: true

require_root 설정은 자동 생성된 테스트 구성에 RootTargetPreparer를 추가하도록 빌드 시스템에 지시합니다. 이렇게 하면 루트 권한으로 테스트를 실행할 수 있습니다.

    test_min_api_level: 29

test_min_api_level 설정은 자동 생성된 테스트 구성에 MinApiLevelModuleController를 추가하도록 빌드 시스템에 지시합니다. Trade Federation이 테스트 구성을 실행할 때 기기 속성에서 test_min_api_levelro.product.first_api_level보다 높으면 테스트를 건너뜁니다.