Konfigurasi build sederhana

Setiap modul pengujian baru harus memiliki file konfigurasi untuk mengarahkan sistem build dengan metadata modul, dependensi waktu kompilasi, dan instruksi pengemasan. Android kini menggunakan sistem build Soong untuk konfigurasi pengujian yang lebih sederhana.

Soong menggunakan file Blueprint atau .bp , yang merupakan deskripsi deklaratif sederhana seperti JSON dari modul yang akan dibuat. Format ini menggantikan sistem berbasis Make yang digunakan pada rilis sebelumnya. Lihat file referensi Soong di Dasbor Integrasi Berkelanjutan untuk detail selengkapnya.

Untuk mengakomodasi pengujian khusus atau menggunakan Android Compatibility Test Suite (CTS), ikuti Konfigurasi Pengujian Kompleks .

Contoh

Entri di bawah berasal dari contoh file konfigurasi Blueprint ini: /platform_testing/tests/example/instrumentation/Android.bp

Sebuah snapshot disertakan di sini untuk kenyamanan:

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

Perhatikan deklarasi android_test di awal menunjukkan ini adalah ujian. Menyertakan android_app sebaliknya akan menunjukkan bahwa ini adalah paket build.

Pengaturan

Pengaturan berikut mendapatkan penjelasannya:

    name: "HelloWorldTests",

Setelan name diperlukan ketika jenis modul android_test ditentukan (di awal blok). Ini memberi nama pada modul Anda, dan APK yang dihasilkan akan diberi nama yang sama dan dengan akhiran .apk , misalnya dalam kasus ini, apk pengujian yang dihasilkan diberi nama HelloWorldTests.apk . Selain itu, ini juga mendefinisikan nama target make untuk modul Anda, sehingga Anda dapat menggunakan make [options] <HelloWorldTests> untuk membangun modul pengujian dan semua dependensinya.

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

Pengaturan static_libs menginstruksikan sistem pembangunan untuk memasukkan konten modul bernama ke dalam apk yang dihasilkan dari modul saat ini. Artinya setiap modul yang diberi nama diharapkan menghasilkan file .jar , dan kontennya akan digunakan untuk menyelesaikan referensi classpath selama waktu kompilasi, serta dimasukkan ke dalam apk yang dihasilkan.

Modul androidx.test.runner adalah bawaan untuk Library AndroidX Test Runner, yang mencakup test runner AndroidJUnitRunner . AndroidJUnitRunner mendukung framework pengujian JUnit4 dan menggantikan InstrumentationTestRunner di Android 10. Baca selengkapnya tentang pengujian aplikasi Android di Menguji aplikasi di Android .

Jika Anda membuat modul instrumentasi baru, Anda harus selalu memulai dengan pustaka androidx.test.runner sebagai test runner Anda. Pohon sumber platform juga mencakup kerangka pengujian berguna lainnya seperti ub-uiautomator , mockito-target , easymock dan banyak lagi.

    certificate: "platform",

Pengaturan certificate memerintahkan sistem build untuk menandatangani apk dengan sertifikat yang sama dengan platform inti. Ini diperlukan jika pengujian Anda menggunakan izin atau API yang dilindungi tanda tangan. Perhatikan bahwa ini cocok untuk pengujian berkelanjutan platform, tetapi tidak boleh digunakan dalam modul pengujian CTS. Perhatikan bahwa contoh ini menggunakan pengaturan sertifikat ini hanya untuk tujuan ilustrasi: kode pengujian dari contoh sebenarnya tidak memerlukan apk pengujian untuk ditandatangani dengan sertifikat platform khusus.

Jika Anda sedang menulis instrumentasi untuk komponen Anda yang berada di luar server sistem, artinya, komponen tersebut dikemas kurang lebih seperti apk aplikasi biasa, kecuali bahwa komponen tersebut dibangun ke dalam image sistem dan mungkin merupakan aplikasi yang memiliki hak istimewa, kemungkinan besar instrumentasi Anda akan menargetkan paket aplikasi (lihat bagian tentang manifes di bawah) komponen Anda. Dalam hal ini, makefile aplikasi Anda mungkin memiliki pengaturan certificate sendiri, dan modul instrumentasi Anda harus mempertahankan pengaturan yang sama. Hal ini karena untuk menargetkan instrumentasi Anda pada aplikasi yang diuji, apk pengujian dan apk aplikasi Anda harus ditandatangani dengan sertifikat yang sama.

Dalam kasus lain, Anda tidak perlu memiliki pengaturan ini sama sekali: sistem pembangunan hanya akan menandatanganinya dengan sertifikat bawaan bawaan, berdasarkan varian pembangunan, dan biasanya disebut dev-keys .

    test_suites: ["device-tests"],

Pengaturan test_suites membuat pengujian mudah ditemukan oleh test harness Federasi Perdagangan. Suite lain dapat ditambahkan di sini seperti CTS sehingga tes ini dapat dibagikan.

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

Pengaturan opsional

Pengaturan opsional berikut mendapatkan penjelasan:

    test_config: "path/to/hello_world_test.xml"

Pengaturan test_config menginstruksikan sistem build, target pengujian Anda memerlukan konfigurasi tertentu. Secara default, AndroidTest.xml di samping Android.bp dikaitkan dengan konfigurasi.

    auto_gen_config: true

Pengaturan auto_gen_config menunjukkan apakah konfigurasi pengujian akan dibuat secara otomatis atau tidak. Jika AndroidTest.xml tidak ada di samping Android.bp , atribut ini tidak perlu disetel ke true secara eksplisit.

    require_root: true

Pengaturan require_root memerintahkan sistem build untuk menambahkan RootTargetPreparer ke konfigurasi pengujian yang dibuat secara otomatis. Ini menjamin pengujian dijalankan dengan izin root.

    test_min_api_level: 29

Pengaturan test_min_api_level menginstruksikan sistem build untuk menambahkan MinApiLevelModuleController ke konfigurasi pengujian yang dibuat secara otomatis. Ketika Federasi Dagang menjalankan konfigurasi pengujian, pengujian akan dilewati jika properti perangkat ro.product.first_api_level < test_min_api_level .