Konfigurasi build sederhana

Setiap modul pengujian baru harus memiliki file konfigurasi untuk mengarahkan sistem build dengan metadata modul, dependensi waktu kompilasi, dan petunjuk 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 dibangun. Format ini menggantikan sistem berbasis Make yang digunakan dalam rilis sebelumnya. Lihat file referensi Soong di Dasbor Integrasi Berkelanjutan untuk mengetahui detail selengkapnya.

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

Contoh

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

Snapshot disertakan di sini untuk memudahkan:

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 yang menunjukkan bahwa ini adalah pengujian. Menyertakan android_app akan menunjukkan bahwa ini adalah paket build.

Setelan

Setelan berikut memerlukan penjelasan:

    name: "HelloWorldTests",

Setelan name diperlukan saat jenis modul android_test ditentukan (di awal blok). Tindakan ini akan 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 menentukan nama target build untuk modul Anda, sehingga Anda dapat menggunakan make [options] <HelloWorldTests> untuk membangun modul pengujian dan semua dependensinya.

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

Setelan static_libs menginstruksikan sistem build untuk menggabungkan konten modul bernama ke dalam APK yang dihasilkan dari modul saat ini. Artinya, setiap modul bernama 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 runner pengujian 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 library androidx.test.runner sebagai pelaksana pengujian. Struktur direktori sumber platform juga mencakup framework pengujian berguna lainnya seperti ub-uiautomator, mockito-target, easymock, dan lainnya.

    certificate: "platform",

Setelan certificate menginstruksikan sistem build untuk menandatangani APK dengan sertifikat yang sama seperti platform inti. Hal 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 setelan sertifikat ini hanya untuk tujuan ilustrasi: kode pengujian contoh tidak benar-benar memerlukan APK pengujian untuk ditandatangani dengan sertifikat platform khusus.

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

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

    test_suites: ["device-tests"],

Setelan test_suites membuat pengujian mudah ditemukan oleh harness pengujian Trade Federation. Suite lainnya dapat ditambahkan di sini seperti CTS agar pengujian ini dapat dibagikan.

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

Setelan opsional

Setelan opsional berikut memerlukan penjelasan:

    test_config: "path/to/hello_world_test.xml"

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

    auto_gen_config: true

Setelan 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 ditetapkan ke benar secara eksplisit.

    require_root: true

Setelan require_root menginstruksikan sistem build untuk menambahkan RootTargetPreparer ke konfigurasi pengujian yang dibuat otomatis. Hal ini menjamin pengujian berjalan dengan izin root.

    test_min_api_level: 29

Setelan test_min_api_level menginstruksikan sistem build untuk menambahkan MinApiLevelModuleController ke konfigurasi pengujian yang dibuat otomatis. Saat Trade Federation menjalankan konfigurasi pengujian, pengujian akan dilewati jika properti perangkat ro.product.first_api_level < test_min_api_level.