Beberapa modul pengujian mungkin memerlukan langkah penyiapan dan penghancuran yang disesuaikan yang tidak dapat dilakukan dalam kasus pengujian itu sendiri. Contoh umumnya dapat mencakup:
- menginstal apk lain (selain apk pengujian)
- mendorong beberapa file ke perangkat
- menjalankan perintah (misalnya, adb shell pm ...)
Sebelumnya, tim komponen biasanya menulis pengujian sisi host untuk melakukan tugas tersebut, yang memerlukan pemahaman tentang harness Trade Federation dan biasanya meningkatkan kompleksitas modul pengujian .
Dengan meminjam dari CTS, kami memperkenalkan konsep konfigurasi modul pengujian untuk mendukung tugas tersebut. Daftar tugas umum di atas dapat dicapai hanya dengan beberapa baris konfigurasi. Untuk fleksibilitas maksimum, Anda bahkan dapat menerapkan penyiapan 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 yang diperlukan dan ditambahkan ke folder sumber modul tingkat atas, yang diberi nama 'AndroidTest.xml'. XML mengikuti format file konfigurasi yang digunakan oleh harness otomatisasi pengujian Trade Federation. Saat ini, tag utama yang ditangani melalui konfigurasi modul pengujian adalah tag “target_preparer” dan "test".
Penyiapan target
Tag “target_preparer”, seperti namanya, menentukan penyiapan target (lihat ITargetPreparer) yang menawarkan metode penyiapan, yang dipanggil sebelum modul pengujian dieksekusi untuk pengujian; dan jika class yang direferensikan dalam tag “target_preparer” juga menerapkan ITargetCleaner, metode penghancurannya 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 “insert” 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 ini akan mengonfigurasi harness pengujian untuk:
- sebelum modul pengujian dipanggil, jalankan perintah shell “settings put secure accessibility_enabled 1” di perangkat
- setelah modul pengujian selesai, jalankan perintah shell “settings put secure accessibility_enabled 0”
Dalam contoh khusus ini, aksesibilitas diaktifkan/dinonaktifkan sebelum/sesudah eksekusi modul pengujian. Dengan contoh sederhana yang ditunjukkan, Anda perlu membahas lebih detail tentang cara penggunaan tag “option”. Seperti yang ditunjukkan di atas, tag dapat memiliki dua atribut: name, value. Atribut name harus merujuk ke salah satu opsi yang ditawarkan oleh penyiapan.
Tujuan pasti kolom value bergantung pada cara penyiapan menentukan opsi: dapat berupa string, angka, boolean, atau bahkan jalur file. Berikut ringkasan tiga penyiapan target umum:
nama class: PushFilePreparer
- nama pendek: push-file
- fungsi: mendorong file arbitrer di bawah folder kasus pengujian ke tujuan di perangkat
- catatan:
- penyiapan ini dapat mendorong dari folder ke folder, atau file ke file; artinya, Anda tidak dapat mendorong file di bawah folder di perangkat: Anda juga harus menentukan nama file tujuan di bawah folder tersebut
- opsi:
- push-file: Push-spec, yang menentukan file lokal ke jalur tempat file tersebut harus didorong di perangkat. Dapat diulang. Jika beberapa file dikonfigurasi untuk didorong ke jalur jarak jauh yang sama, file terbaru akan didorong.
- push: (tidak digunakan lagi) Push-spec, yang diformat sebagai
'
/path/to/srcfile.txt->/path/to/destfile.txt' atau '/path/to/srcfile.txt->/path/to/destdir/'. Dapat diulang. Jalur ini mungkin relatif terhadap direktori modul pengujian atau direktori out itu sendiri. - post-push: Perintah untuk dijalankan di perangkat (dengan `
adb shell <your command>`) setelah semua upaya mendorong dilakukan. Kasus penggunaan umum adalah menggunakan chmod untuk izin
nama class: InstallApkSetup
- nama pendek:install-apk
- fungsi: mendorong file apk arbitrer di bawah ke tujuan di perangkat
- opsi:
- test-file-name: nama apk yang akan diinstal di perangkat.
- install-arg: Argumen tambahan yang akan diteruskan ke perintah pm install, termasuk tanda hubung di awal, misalnya “-d". Dapat diulang
nama class: RunCommandTargetPreparer
- nama pendek: run-command
- fungsi: menjalankan perintah shell arbitrer sebelum atau setelah eksekusi modul pengujian
- opsi:
- run-command:perintah shell adb yang akan dijalankan. Dapat diulang
- teardown-command: perintah shell adb yang akan dijalankan selama fase penghancuran. Dapat diulang
Class pengujian
Class pengujian adalah class Trade Federation yang akan digunakan untuk menjalankan pengujian.
<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 tiga class pengujian umum:
nama class: GTest
- nama pendek: gtest
- fungsi: Pengujian yang menjalankan paket pengujian native di perangkat tertentu.
- opsi:
- native-test-device-path:Jalur di perangkat tempat pengujian native berada.
nama class: InstrumentationTest
- nama pendek: instrumentation
- fungsi: Pengujian yang menjalankan paket uji instrumentasi di perangkat tertentu
- opsi:
- package: Nama paket manifes aplikasi pengujian Android yang akan dijalankan.
- class:Nama class pengujian yang akan dijalankan.
- method:Nama metode pengujian yang akan dijalankan.
nama class: AndroidJUnitTest
- fungsi: Pengujian yang menjalankan paket uji instrumentasi di perangkat tertentu menggunakan android.support.test.runner.AndroidJUnitRunner. Ini adalah cara utama untuk menjalankan uji instrumentasi.