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
.