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.

Soong menggunakan file Blueprint atau .bp, yang merupakan deskripsi deklaratif sederhana seperti JSON untuk modul yang akan dibuat. Format ini menggantikan sistem berbasis Make yang digunakan dalam rilis sebelumnya. Lihat File referensi Soong di Dasbor Continuous Integration untuk mengetahui detail selengkapnya.

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 bahwa deklarasi android_test di awal menunjukkan bahwa ini adalah pengujian. Menyertakan android_app justru akan menunjukkan bahwa ini bukan build paket.

Setelan

Setelan berikut mendapatkan penjelasan:

    name: "HelloWorldTests",

Setelan name diperlukan saat jenis modul android_test ditentukan (di awal blok). Ini memberi nama modul Anda, dan hasil APK akan diberi nama yang sama dan dengan akhiran .apk, mis. 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 bernama ke dalam apk yang dihasilkan dari modul saat ini. Hal ini berarti bahwa setiap modul bernama diharapkan menghasilkan file .jar, dan kontennya akan digunakan untuk menyelesaikan referensi classpath selama waktu kompilasi, serta digabungkan ke dalam apk yang dihasilkan.

Modul androidx.test.runner adalah modul bawaan untuk AndroidX Test Runner Library yang menyertakan runner pengujian AndroidJUnitRunner. AndroidJUnitRunner mendukung framework pengujian JUnit4 dan diganti InstrumentationTestRunner di Android 10. Baca selengkapnya tentang 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 lain yang berguna seperti ub-uiautomator, mockito-target, easymock, dan lainnya.

    certificate: "platform",

Setelan certificate menginstruksikan sistem build untuk menandatangani apk dengan sertifikat sebagai platform inti. Hal ini diperlukan jika pengujian Anda menggunakan tanda tangan izin yang dilindungi atau API. Perhatikan bahwa ini cocok untuk continuous platform pengujian, tetapi tidak boleh digunakan dalam modul uji CTS. Perhatikan bahwa contoh ini menggunakan setelan sertifikat ini hanya untuk tujuan ilustrasi: kode pengujian dalam contoh tersebut, apk pengujian tidak perlu ditandatangani dengan sertifikat platform khusus.

Jika Anda menulis instrumentasi untuk komponen yang berada di luar server sistem, yaitu, itu dikemas kurang lebih seperti apk aplikasi biasa, kecuali bahwa itu dibangun ke dalam {i>image<i} sistem dan mungkin merupakan aplikasi khusus, kemungkinan adalah instrumentasi Anda akan menargetkan paket aplikasi (lihat di bawah tentang manifes) dari komponen Anda. Dalam hal ini, aplikasi Anda makefile mungkin memiliki setelan certificate sendiri, dan instrumentasi Anda seharusnya tetap mempertahankan pengaturan yang sama. Hal ini karena untuk menargetkan instrumentasi pada aplikasi yang sedang diuji, apk pengujian dan apk aplikasi harus ditandatangani dengan sertifikat yang sama.

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

    test_suites: ["device-tests"],

Setelan test_suites membuat pengujian mudah ditemukan oleh Trade Tes federasi. 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 memerlukan konfigurasi tertentu. Secara default, AndroidTest.xml di samping Android.bp adalah yang terkait dengan konfigurasi.

    auto_gen_config: true

Setelan auto_gen_config menunjukkan apakah akan membuat konfigurasi pengujian atau tidak secara otomatis. Jika AndroidTest.xml tidak ada di samping Android.bp, elemen ini tidak perlu ditetapkan ke true secara eksplisit.

    require_root: true

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

    test_min_api_level: 29

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