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 dari modul yang akan di-build. Format ini menggantikan sistem berbasis Make yang digunakan dalam rilis sebelumnya. Lihat file referensi Soong di Dasbor Continuous Integration untuk mengetahui detail lengkapnya.

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

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 mendapatkan penjelasan:

    name: "HelloWorldTests",

Setelan name diperlukan saat 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 hal ini, APK pengujian yang dihasilkan diberi nama HelloWorldTests.apk. Selain itu, hal ini juga menentukan nama target pembuatan untuk modul Anda, sehingga Anda dapat menggunakan make [options] <HelloWorldTests> untuk mem-build modul pengujian dan semua dependensinya.

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

Setelan static_libs menginstruksikan sistem build untuk menggabungkan konten modul yang dinamai ke dalam apk yang dihasilkan dari modul saat ini. Artinya, setiap modul yang diberi nama diharapkan menghasilkan file .jar, dan kontennya akan digunakan untuk me-resolve referensi classpath selama waktu kompilasi, serta disertakan ke dalam apk yang dihasilkan.

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

Jika membuat modul instrumentasi baru, Anda harus selalu memulai dengan library androidx.test.runner sebagai runner pengujian. Hierarki sumber platform juga menyertakan 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. Perlu diperhatikan bahwa contoh ini menggunakan setelan sertifikat ini hanya untuk tujuan ilustrasi: kode pengujian contoh sebenarnya tidak mengharuskan APK pengujian ditandatangani dengan sertifikat platform khusus.

Jika Anda menulis instrumentasi untuk komponen yang berada di luar server sistem, yaitu, dikemas kurang lebih seperti apk aplikasi reguler, kecuali bahwa komponen tersebut di-build ke dalam image sistem dan mungkin merupakan aplikasi dengan hak istimewa, kemungkinan instrumentasi Anda akan menargetkan paket aplikasi (lihat bagian di bawah tentang manifes) dari 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 pada aplikasi yang sedang diuji, apk pengujian dan apk aplikasi 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 lain dapat ditambahkan di sini seperti CTS sehingga pengujian ini dapat dibagikan.

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

Setelan opsional

Setelan opsional berikut mendapatkan 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 Anda akan membuat konfigurasi pengujian secara otomatis atau tidak. Jika AndroidTest.xml tidak ada di samping Android.bp, atribut ini tidak perlu disetel ke benar secara eksplisit.

    require_root: true

Setelan require_root menginstruksikan sistem build untuk menambahkan RootTargetPreparer ke konfigurasi pengujian yang dibuat otomatis. Tindakan 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.