Beberapa modul uji mungkin memerlukan penyiapan yang disesuaikan dan langkah-langkah penghancuran yang tidak dapat dilakukan dalam kasus uji itu sendiri. Contoh umum mungkin termasuk:
- instal apk lain (selain apk uji)
- mendorong beberapa file ke perangkat
- jalankan perintah (misalnya adb shell pm ...)
Di masa lalu, tim komponen biasanya menggunakan tes sisi tuan rumah untuk melakukan tugas tersebut, yang membutuhkan pemahaman tentang harness Federasi Dagang dan biasanya meningkatkan kompleksitas modul tes.
Meminjam dari CTS, kami memperkenalkan konsep konfigurasi modul pengujian untuk mendukung tugas-tugas tersebut, daftar tugas umum di atas dapat dicapai hanya dengan beberapa baris konfigurasi. Untuk fleksibilitas maksimum, Anda bahkan dapat menerapkan persiapan target Anda sendiri, seperti yang ditentukan oleh ITargetPreparer atau ITargetCleaner , dan mengonfigurasinya untuk digunakan dalam konfigurasi modul pengujian Anda sendiri.
Konfigurasi modul pengujian untuk modul pengujian adalah file XML wajib yang ditambahkan ke folder sumber modul tingkat atas, bernama 'AndroidTest.xml'. XML mengikuti format file konfigurasi yang digunakan oleh rangkaian otomasi pengujian Federasi Perdagangan. Saat ini tag utama yang ditangani melalui konfigurasi modul pengujian adalah tag “target_preparer” dan "test".
Penyusun sasaran
Tag “target_preparer”, seperti namanya, menentukan penyusun target (lihat ITargetPreparer ) yang menawarkan metode penyiapan, yang dipanggil sebelum modul pengujian dijalankan untuk pengujian; dan jika kelas yang direferensikan dalam tag “target_preparer” juga mengimplementasikan ITargetCleaner , metode pembongkarannya akan dipanggil setelah modul pengujian selesai.
Untuk menggunakan konfigurasi modul umum bawaan, tambahkan file baru 'AndroidTest.xml' di folder tingkat atas untuk modul pengujian Anda, dan isi dengan konten berikut:
<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>
Sebagai contoh, kita dapat menambahkan tag opsi berikut (pada komentar "sisipkan" di atas):
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="run-command" value="settings put secure accessibility_enabled 1" />
<option name="teardown-command" value="settings put secure accessibility_enabled 0" />
</target_preparer>
Opsi akan mengonfigurasi test harness untuk:
- sebelum modul uji dipanggil, jalankan perintah shell "settings put secure visibility_enabled 1" pada perangkat
- setelah modul tes selesai, jalankan perintah shell "settings put secure visibility_enabled 0"
Dalam contoh khusus ini, aksesibilitas masing-masing diaktifkan/dinonaktifkan sebelum/setelah eksekusi modul pengujian. Dengan contoh sederhana yang didemonstrasikan, penting untuk membahas detail lebih lanjut tentang bagaimana tag "opsi" digunakan. Seperti yang ditunjukkan di atas, tag dapat memiliki dua atribut: nama, nilai. Atribut nama harus mengacu pada salah satu opsi yang ditawarkan oleh pembuat.
Tujuan pasti dari bidang nilai tergantung pada bagaimana penyusun menentukan opsi: itu bisa berupa string, angka, boolean, atau bahkan jalur file. Berikut ringkasan dari tiga penyusun target umum:
nama kelas: PushFilePreparer
- nama pendek : push-file
- fungsi : mendorong file sewenang-wenang di bawah folder test case ke tujuan di perangkat
- catatan :
- penyusun ini dapat mendorong dari folder ke folder, atau file ke file; yaitu, Anda tidak dapat mendorong file di bawah folder pada perangkat: Anda juga harus menentukan nama file tujuan di bawah folder itu
- pilihan :
- push-file: Spesifikasi push, yang menentukan file lokal ke jalur tempat file tersebut harus didorong pada perangkat. Mungkin berulang. Jika banyak file dikonfigurasi untuk didorong ke jalur jarak jauh yang sama, yang terbaru akan didorong.
- push: (usang) Spesifikasi push, diformat sebagai '
/path/to/srcfile.txt->/path/to/destfile.txt
' atau '/path/to/srcfile.txt->/path/to/destdir/
'. Mungkin berulang. Jalur ini mungkin relatif terhadap direktori modul pengujian atau direktori keluar itu sendiri. - post-push: Perintah untuk dijalankan pada perangkat (dengan `
adb shell <your command>
`) setelah semua dorongan dicoba. Kasus penggunaan umum akan menggunakan chmod untuk izin
nama kelas: InstallApkSetup
- nama pendek: install-apk
- fungsi: mendorong file apk sewenang-wenang di bawah ke tujuan di perangkat
- pilihan:
- test-file-name: nama apk yang akan diinstal ke perangkat.
- install-arg: Argumen tambahan untuk diteruskan ke perintah pm install, termasuk tanda hubung awal, misalnya "-d". Dapat diulang
nama kelas: RunCommandTargetPreparer
- nama pendek: jalankan-perintah
- fungsi: mengeksekusi perintah shell sewenang-wenang sebelum atau sesudah eksekusi modul uji
- pilihan:
- run-command: perintah adb shell untuk dijalankan. Mungkin berulang
- teardown-command: perintah adb shell untuk dijalankan selama fase teardown. Mungkin berulang
Kelas uji
Kelas tes adalah kelas Federasi Dagang yang akan digunakan untuk melaksanakan tes.
<test class="com.android.tradefed.testtype.AndroidJUnitTest">
<option name="package" value="android.test.example.helloworld"/>
<option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>
Berikut adalah tiga kelas tes umum:
nama kelas: GTest
- nama pendek: gtest
- function: Tes yang menjalankan paket tes asli pada perangkat yang diberikan.
- pilihan:
- native-test-device-path: Jalur pada perangkat tempat tes asli berada.
nama kelas: InstrumentationTest
- nama pendek: instrumentasi
- function: Tes yang menjalankan paket uji instrumentasi pada perangkat tertentu
- pilihan:
- package: Nama paket manifes dari aplikasi pengujian Android yang akan dijalankan.
- class: Nama kelas uji yang akan dijalankan.
- metode: Nama metode pengujian yang akan dijalankan.
nama kelas: AndroidJUnitTest
- function: Pengujian yang menjalankan paket pengujian instrumentasi pada perangkat tertentu menggunakan android.support.test.runner.AndroidJUnitRunner Ini adalah cara utama untuk menjalankan pengujian instrumentasi.