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
.