Konfigurasi Uji Kompleks

Beberapa modul uji mungkin memerlukan penyiapan yang disesuaikan dan langkah-langkah pembongkaran yang tidak dapat dilakukan dalam kasus uji itu sendiri. Contoh umum mungkin termasuk:

  • instal apk lain (selain apk uji)
  • dorong beberapa file ke perangkat
  • menjalankan perintah (misalnya adb shell pm ...)

Di masa lalu, tim komponen biasanya menggunakan tes sisi tuan rumah untuk melakukan tugas seperti itu, yang membutuhkan pemahaman tentang harness Federasi Perdagangan dan biasanya meningkatkan kompleksitas modul tes.

Meminjam dari CTS, kami memperkenalkan konsep konfigurasi modul uji untuk mendukung tugas-tugas tersebut, daftar tugas umum di atas dapat dicapai hanya dengan beberapa baris konfigurasi. Untuk fleksibilitas maksimum, Anda bahkan dapat mengimplementasikan persiapan target Anda sendiri, seperti yang didefinisikan 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 yang ditambahkan ke folder sumber modul tingkat atas, bernama 'AndroidTest.xml'. XML mengikuti format file konfigurasi yang digunakan oleh rangkaian otomatisasi uji Federasi Perdagangan. Saat ini tag utama yang ditangani melalui konfigurasi modul pengujian adalah tag "target_preparer" dan "test".

Persiapan target

Tag “target_preparer”, seperti namanya, mendefinisikan persiapan target (lihat ITargetPreparer ) yang menawarkan metode penyiapan, yang dipanggil sebelum modul pengujian dijalankan untuk pengujian; dan jika kelas yang dirujuk dalam tag “target_preparer” juga mengimplementasikan ITargetCleaner , metode teardownnya 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 "masukkan" 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 harness uji ke:

  1. sebelum modul uji dipanggil, jalankan perintah shell "pengaturan menempatkan aksesibilitas aman_enabled 1" pada perangkat
  2. setelah modul pengujian selesai, jalankan perintah shell “settings put secure accessibilitas_enabled 0”

Dalam contoh khusus ini, aksesibilitas masing-masing diaktifkan/dinonaktifkan sebelum/setelah eksekusi modul pengujian. Dengan contoh sederhana yang didemonstrasikan, penting untuk mencakup lebih banyak detail tentang bagaimana tag “option” digunakan. Seperti yang ditunjukkan di atas, tag dapat memiliki dua atribut: nama, nilai. Atribut name menunjukkan nama opsi, dan selanjutnya dipecah menjadi dua bagian yang dipisahkan oleh titik dua: nama pendek untuk pembuat, dan nama opsi sebenarnya yang ditawarkan oleh pembuat.

Tujuan yang tepat dari bidang nilai tergantung pada bagaimana penyusun mendefinisikan opsi: itu bisa berupa string, angka, boolean, atau bahkan jalur file, dll. Dalam contoh di atas, nama "run-command:run-command" berarti bahwa kami menetapkan nilai untuk opsi "run-command" yang ditentukan oleh pembuat target dengan nama pendek "run-command"; dan nama "run-command:teardown-command" berarti bahwa kami menetapkan nilai untuk opsi "teardown-command" yang juga ditentukan oleh pembuat target yang sama dengan nama pendek "run-command". Berikut ringkasan dari tiga penyusun target umum:

  • nama kelas: PushFilePreparer

    • nama pendek : file-push
    • fungsi : mendorong file sewenang-wenang di bawah folder kasus uji ke tujuan pada perangkat
    • catatan :
      • pembuat ini dapat mendorong dari folder ke folder, atau file ke file; yaitu, Anda tidak dapat mendorong file di bawah folder di perangkat: Anda juga harus menentukan nama file tujuan di bawah folder itu
    • pilihan :
      • push-file: Sebuah spesifikasi-push, menentukan file lokal ke jalur di mana ia harus didorong pada perangkat. Dapat diulang. Jika beberapa file dikonfigurasi untuk didorong ke jalur jarak jauh yang sama, yang terbaru akan didorong.
      • push: (tidak digunakan lagi) Sebuah spesifikasi push, 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 keluar itu sendiri.
      • post-push: Perintah untuk dijalankan di perangkat (dengan ` adb shell <your command> `) setelah semua push dicoba. Kasus penggunaan umum akan menggunakan chmod untuk izin
  • nama kelas: InstallApkSetup

    • nama pendek: install-apk
    • fungsi: mendorong file apk sewenang-wenang ke 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 di depan, misalnya “-d". Dapat diulang
  • nama kelas: RunCommandTargetPreparer

    • nama pendek: run-command
    • fungsi: mengeksekusi perintah shell arbitrer sebelum atau setelah eksekusi modul pengujian
    • pilihan:
      • run-command: perintah shell adb untuk dijalankan. Dapat diulang
      • teardown-command: perintah shell adb untuk dijalankan selama fase teardown. Dapat diulang

Kelas tes

Kelas tes adalah kelas Federasi Perdagangan yang digunakan untuk menjalankan 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
    • fungsi: Tes yang menjalankan paket tes asli pada perangkat yang diberikan.
    • pilihan:
      • native-test-device-path: Jalur pada perangkat tempat pengujian asli berada.
  • nama kelas: InstrumentationTest

    • nama pendek: instrumentasi
    • fungsi: Tes yang menjalankan paket tes instrumentasi pada perangkat yang diberikan
    • 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

    • fungsi: Pengujian yang menjalankan paket pengujian instrumentasi pada perangkat tertentu menggunakan android.support.test.runner.AndroidJUnitRunner Ini adalah cara utama untuk menjalankan pengujian instrumentasi.