Konfigurasi pengujian yang rumit

Beberapa modul pengujian mungkin memerlukan pengaturan khusus dan langkah-langkah pembongkaran yang tidak dapat dilakukan dalam kasus pengujian 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 memerlukan pemahaman tentang pemanfaatan Federasi Perdagangan 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 mengimplementasikan pembuat 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 yang ditambahkan ke folder sumber modul tingkat atas, bernama 'AndroidTest.xml'. XML mengikuti format file konfigurasi yang digunakan oleh memanfaatkan otomatisasi 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, mendefinisikan pembuat target (lihat ITargetPreparer ) yang menawarkan metode pengaturan, 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 “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>

Opsinya akan mengonfigurasi test harness ke:

  1. sebelum modul pengujian dipanggil, jalankan perintah shell “settings put secure access_enabled 1” pada perangkat
  2. setelah modul pengujian selesai, jalankan perintah shell “settings put secure access_enabled 0”

Dalam contoh khusus ini, aksesibilitas masing-masing diaktifkan/dinonaktifkan sebelum/sesudah eksekusi modul pengujian. Dengan contoh sederhana yang ditunjukkan, penting untuk membahas lebih banyak detail 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 sebenarnya dari bidang nilai bergantung pada cara pembuat menentukan opsi: dapat berupa string, angka, boolean, atau bahkan jalur file. Berikut ringkasan dari tiga pembuat target umum:

  • nama kelas: PushFilePreparer

    • nama pendek : push-file
    • fungsi : mendorong file arbitrer di bawah folder kasus uji ke tujuan pada perangkat
    • catatan :
      • pembuat ini dapat melakukan push dari folder ke folder, atau file ke file; artinya, Anda tidak dapat memasukkan file ke dalam folder di perangkat: Anda juga harus menentukan nama file tujuan di bawah folder itu
    • pilihan :
      • file dorong: Spesifikasi push, menentukan file lokal ke jalur yang akan digunakan untuk mendorongnya pada perangkat. Mungkin terulang. Jika beberapa file dikonfigurasi untuk dikirim ke jalur jarak jauh yang sama, file terbaru akan dikirim.
      • push: (tidak digunakan lagi) Spesifikasi push, diformat sebagai ' /path/to/srcfile.txt->/path/to/destfile.txt ' atau ' /path/to/srcfile.txt->/path/to/destdir/ '. Mungkin terulang. Jalur ini mungkin berhubungan dengan direktori modul pengujian atau direktori keluar itu sendiri.
      • post-push: Perintah untuk dijalankan pada perangkat (dengan ` adb shell <your command> `) setelah semua dorongan telah dicoba. Kasus penggunaan umum akan menggunakan chmod untuk izin
  • nama kelas: InstallApkSetup

    • nama pendek: install-apk
    • fungsi: mendorong file apk sembarang ke tujuan di perangkat
    • pilihan:
      • test-file-name: nama apk yang akan diinstal pada 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 sewenang-wenang sebelum atau sesudah eksekusi modul pengujian
    • pilihan:
      • run-command: perintah adb shell untuk dijalankan. Mungkin terulang
      • perintah pembongkaran: perintah adb shell untuk dijalankan selama fase pembongkaran. Mungkin terulang

Kelas ujian

Kelas tes adalah kelas Federasi Perdagangan yang 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 yang umum:

  • nama kelas: GTest

    • nama pendek: gtest
    • fungsi: Pengujian yang menjalankan paket pengujian asli pada perangkat tertentu.
    • pilihan:
      • jalur-perangkat-uji-asli: Jalur pada perangkat tempat pengujian asli berada.
  • nama kelas: InstrumentationTest

    • nama pendek: instrumentasi
    • fungsi: Pengujian yang menjalankan paket pengujian instrumentasi pada perangkat tertentu
    • pilihan:
      • paket: Nama paket manifes dari aplikasi pengujian Android yang akan dijalankan.
      • kelas: Nama kelas tes 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.