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
.