Dokumen ini menjelaskan cara menjalankan pengujian langsung dari command line. Dokumen ini mengasumsikan bahwa Anda telah memahami cara membuat aplikasi Android dan menulis pengujian untuk aplikasi. Untuk mengetahui informasi selengkapnya tentang cara mem-build pengujian untuk aplikasi, lihat Menguji aplikasi di Android.
Saat mem-build aplikasi menggunakan sistem build Gradle, plugin Android Gradle memungkinkan Anda menjalankan pengujian dari project Gradle menggunakan command line. Untuk kontrol lebih detail, Anda juga dapat memilih untuk menjalankan pengujian melalui shell Android Debug Bridge (adb). Hal ini dapat berguna saat menjalankan pengujian di lingkungan continuous integration.
Untuk mempelajari cara menjalankan pengujian berinstrumen otomatis dari command line menggunakan perangkat virtual yang dikelola Gradle untuk Anda, lihat Menskalakan pengujian dengan Perangkat yang Dikelola Gradle.
Menjalankan pengujian dengan Gradle
Plugin Android Gradle memungkinkan Anda menjalankan pengujian dari project Gradle menggunakan command line.
Tabel di bawah merangkum cara menjalankan pengujian dengan Gradle:
Jenis pengujian unit | Perintah untuk dijalankan | Lokasi hasil pengujian |
---|---|---|
Pengujian unit lokal |
Jalankan tugas test :
|
File hasil pengujian HTML: direktori path_to_your_project/module_name/build/reports/tests/ .
File hasil pengujian XML: |
Pengujian unit berinstrumen |
Jalankan tugas connectedAndroidTest :
|
File hasil pengujian HTML: direktori path_to_your_project/module_name/build/reports/androidTests/connected/ .
File hasil pengujian XML: |
Gradle mendukung
singkatan nama tugas.
Misalnya, Anda dapat memulai tugas connectedAndroidTest
dengan
memasukkan perintah berikut:
./gradlew cAT
Anda juga dapat memilih untuk menjalankan tugas Gradle check
dan connectedCheck
. Tugas
ini masing-masing berjalan di pengujian berinstrumen atau lokal, tetapi
menyertakan pemeriksaan lain yang ditambahkan oleh plugin Gradle lain.
Menjalankan pengujian pada modul
Tugas test
dan connectedAndroidTest
menjalankan pengujian pada setiap modul di
project Anda. Anda dapat menjalankan pengujian pada modul tertentu dengan
memberi awalan pada tugas test
atau connectedAndroidTest
dengan nama modul dan
titik dua (:). Misalnya, perintah berikut menjalankan pengujian berinstrumen hanya untuk
modul mylibrary
:
./gradlew mylibrary:connectedAndroidTest
Menjalankan pengujian pada varian build
Tugas test
dan connectedAndroidTest
menjalankan pengujian pada setiap
varian build di project Anda. Anda dapat menargetkan
varian build tertentu menggunakan sintaksis berikut:
- Untuk pengujian unit lokal:
./gradlew testVariantNameUnitTest
- Untuk uji instrumentasi:
./gradlew connectedVariantNameAndroidTest
Menjalankan metode atau class pengujian tertentu
Saat menjalankan pengujian unit lokal, Gradle memungkinkan Anda menargetkan pengujian tertentu menggunakan
flag --tests
. Misalnya, perintah berikut hanya menjalankan
pengujian sampleTestMethod
untuk varian build tertentu. Untuk mempelajari lebih lanjut
penggunaan flag --tests
, baca dokumentasi Gradle di
pemfilteran pengujian.
./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'
Menjalankan pengujian dengan adb
Jika Anda menjalankan pengujian dari command line dengan Android Debug Bridge (adb), akan ada lebih banyak opsi untuk memilih pengujian yang akan dijalankan daripada dengan metode lainnya. Anda dapat memilih metode pengujian satu per satu, memfilter pengujian sesuai dengan anotasi kustom, atau menentukan opsi pengujian. Karena jalannya pengujian dikendalikan sepenuhnya dari command line, Anda dapat menyesuaikan pengujian dengan skrip shell dalam berbagai cara.
Untuk menjalankan pengujian dari command line, jalankan adb shell
untuk memulai shell command line
di perangkat atau emulator Anda. Di dalam shell tersebut, Anda dapat berinteraksi dengan
pengelola aktivitas
menggunakan perintah am
dan menggunakan subperintah instrument
untuk menjalankan pengujian.
Untuk mempermudah, Anda dapat memulai shell adb, memanggil am instrument
, dan menentukan
flag command line dalam satu baris input. Shell akan terbuka di perangkat atau
emulator, menjalankan pengujian, menghasilkan output, lalu kembali ke command line
di komputer Anda.
Untuk menjalankan pengujian dengan am instrument
:
- Build atau build ulang aplikasi utama dan paket pengujian Anda.
- Instal file paket pengujian dan paket aplikasi utama Android Anda (file APK) ke emulator atau perangkat Android saat ini.
Di command line, masukkan:
adb shell am instrument -w <test_package_name>/<runner_class>
Dengan
<test_package_name>
sebagai nama paket Android aplikasi pengujian, dan<runner_class>
sebagai nama class test runner Android yang digunakan. Nama paket Android adalah nilai atribut paket dari elemen manifes dalam file manifes (AndroidManifest.xml
) paket pengujian Anda.Class test runner Android biasanya
AndroidJUnitRunner
:adb shell am instrument -w com.android.example/androidx.test.runner.AndroidJUnitRunner
Hasil pengujian Anda muncul di STDOUT
.
flag am instrument
Untuk menemukan daftar semua flag yang akan digunakan dengan perintah am instrument
,
jalankan adb shell am help
. Beberapa flag penting dijelaskan dalam
tabel berikut:
Flag | Nilai | Deskripsi |
---|---|---|
-w
|
(tidak ada) |
Memaksa am instrument untuk menunggu sampai instrumentasi
dihentikan sebelum berhenti sendiri. Tindakan ini akan membuat
shell tetap terbuka sampai pengujian selesai. Flag ini diperlukan untuk
melihat hasil pengujian Anda.
|
-r
|
(tidak ada) |
Output menghasilkan format raw. Gunakan flag ini saat Anda ingin
mengumpulkan hasil pengukuran performa sehingga tidak diformat sebagai
hasil pengujian. Tanda ini dirancang untuk digunakan dengan tanda
-e perf true (didokumentasikan dalam bagian
opsi am instrument).
|
-e
|
<test_options>
|
Memberikan opsi pengujian sebagai key-value pair. Alat am instrument meneruskan kode ini ke class instrumentasi yang ditentukan menggunakan metode onCreate() . Anda dapat menentukan beberapa kemunculan
-e <test_options> . Kunci dan nilai
dijelaskan di bagian
opsi am instrument. Anda hanya
dapat menggunakan key-value pair ini dengan
AndroidJUnitRunner
atau dengan InstrumentationTestRunner
dan subclass-nya. Menggunakannya dengan class lain tidak berpengaruh apa pun.
|
--no-hidden-api-checks
|
(tidak ada) | Menonaktifkan pembatasan penggunaan API tersembunyi. Untuk informasi selengkapnya tentang definisi API tersembunyi dan pengaruhnya terhadap aplikasi, baca Pembatasan pada antarmuka non-SDK. |
Opsi am instrument
Alat am instrument
meneruskan opsi pengujian ke
AndroidJUnitRunner
atau InstrumentationTestRunner
dalam bentuk key-value pair, menggunakan tanda -e
, dengan sintaksis ini:
-e <key> <value>
Sebagian kunci menerima beberapa nilai. Tentukan beberapa nilai dalam
daftar yang dipisahkan koma. Misalnya, pemanggilan
AndroidJUnitRunner
memberikan beberapa nilai untuk kunci package
:
adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
> com.android.test/androidx.test.runner.AndroidJUnitRunner
Tabel berikut mencantumkan key-value pair yang dapat Anda gunakan dengan test runner:
Kunci | Nilai | Deskripsi |
---|---|---|
package
|
<Java_package_name>
|
Nama paket Java yang sepenuhnya memenuhi syarat untuk salah satu paket dalam aplikasi pengujian. Setiap class kasus pengujian yang menggunakan nama paket ini dieksekusi. Perhatikan bahwa ini bukan nama paket Android; paket pengujian memiliki satu nama paket Android, tetapi mungkin memiliki beberapa paket Java di dalamnya. |
class |
<class_name> |
Nama class Java yang sepenuhnya memenuhi syarat untuk salah satu class kasus pengujian. Hanya class kasus pengujian ini yang dieksekusi. |
<class_name>#method name |
Nama class kasus pengujian yang sepenuhnya memenuhi syarat, dan salah satu metodenya. Hanya metode ini yang dieksekusi. Perhatikan tanda pagar (#) di antara nama class dan nama metode. | |
func |
true |
Menjalankan semua class pengujian yang memperpanjang
InstrumentationTestCase .
|
unit |
true |
Menjalankan semua class pengujian yang tidak memperpanjang
InstrumentationTestCase atau
PerformanceTestCase .
|
size |
[small | medium | large ]
|
Menjalankan metode pengujian yang dianotasi berdasarkan ukuran. Anotasi tersebut adalah
@SmallTest , @MediumTest , dan
@LargeTest .
|
perf |
true |
Menjalankan semua class pengujian yang menerapkan
PerformanceTestCase .
Saat Anda menggunakan opsi ini, tentukan flag -r untuk
am instrument sehingga output disimpan dalam format
raw dan tidak diformat ulang sebagai hasil pengujian.
|
debug |
true |
Menjalankan pengujian dalam mode debug. |
log |
true |
Memuat dan mencatat semua pengujian yang ditentukan, tetapi tidak menjalankannya. Informasi
pengujian muncul di STDOUT . Gunakan kode ini untuk memverifikasi
kombinasi spesifikasi filter dan pengujian lainnya.
|
emma |
true |
Menjalankan analisis cakupan kode EMMA dan menulis output ke
/data/<app_package>/coverage.ec di perangkat. Untuk
mengganti lokasi file, gunakan kunci coverageFile
yang dijelaskan dalam entri berikut.
Catatan: Opsi ini memerlukan build
aplikasi pengujian berinstrumen EMMA, yang dapat Anda buat dengan
target |
coverageFile |
<filename> |
Mengganti lokasi default file cakupan EMMA pada
perangkat. Tentukan nilai ini sebagai jalur dan nama file dalam format UNIX.
Nama file default dijelaskan dalam entri untuk
kunci emma .
|
Saat menggunakan flag -e
, perhatikan hal-hal berikut:
am instrument
memanggilonCreate(Bundle)
denganBundle
yang berisi key-value pair.- Kunci
package
lebih diutamakan daripada kunciclass
. Jika Anda menentukan paket, lalu menentukan class dalam paket tersebut secara terpisah, Android akan menjalankan semua pengujian dalam paket dan mengabaikan kunci class. - Kunci
func
dan kunciunit
tidak dapat terjadi bersamaan.
Contoh penggunaan
Bagian berikut memberikan contoh penggunaan am instrument
untuk menjalankan pengujian.
Pengujian didasarkan pada struktur berikut:
- Paket pengujian memiliki nama paket Android
com.android.demo.app.tests
. - Dua class pengujian berinstrumen:
TestClass1
, yang berisi metode pengujiantestMethod1
.TestClass2
, yang berisi metode pengujiantestMethod2
dantestMethod3
.
- Test runner-nya adalah
AndroidJUnitRunner
.
Menjalankan semua paket pengujian
Untuk menjalankan semua class pengujian dalam paket pengujian, masukkan:
adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Menjalankan semua pengujian dalam class kasus pengujian
Untuk menjalankan semua pengujian di class TestClass1
, masukkan:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Memilih subset pengujian
Untuk menjalankan semua pengujian di class TestClass1
dan metode testMethod3
di TestClass2
,
masukkan:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1,com.android.demo.app.tests.TestClass2#testMethod3 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
Anda dapat menemukan lebih banyak kasus penggunaan di
referensi API
AndroidJUnitRunner
.