Konfigurasi pengujian kompleks

Beberapa modul pengujian mungkin memerlukan penyiapan yang disesuaikan dan menghilangkan langkah-langkah yang tidak dilakukan dalam kasus pengujian itu sendiri. Contoh umumnya meliputi:

  • menginstal apk lain (selain apk pengujian)
  • kirim beberapa file ke perangkat
  • jalankan perintah (misalnya adb shell pm ...)

Di masa lalu, tim komponen biasanya memilih untuk menulis pengujian sisi {i>host<i} untuk melakukan tugas seperti itu, yang membutuhkan pemahaman tentang penggunaan Federasi Perdagangan dan biasanya meningkatkan kompleksitas modul pengujian .

Meminjam dari CTS, kami memperkenalkan konsep konfigurasi modul pengujian untuk mendukung tugas tersebut, daftar tugas umum di atas dapat dilakukan hanya dengan beberapa baris konfigurasi. Untuk mendapatkan fleksibilitas maksimum, Anda bahkan dapat mengimplementasikan target Anda sendiri persiapan, 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 wajib yang ditambahkan ke bagian atas folder sumber modul level bernama ‘AndroidTest.xml’. XML mengikuti format {i>file<i} konfigurasi yang digunakan oleh {i> mesh<i} otomatisasi uji{i> Trade Federation<i}. Saat ini tag utama yang ditangani melalui konfigurasi modul pengujian adalah “target_preparer” dan "uji coba" {i>tag<i}.

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 implements ITargetCleaner, metode pembongkarannya akan dipanggil setelah modul pengujian selesai.

Untuk menggunakan konfigurasi modul umum bawaan, tambahkan file baru 'AndroidTest.xml' di folder tingkat teratas untuk modul pengujian Anda, dan isi dengan konten:

<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>

Contohnya, kita dapat menambahkan tag opsi berikut (di bagian 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 tes otomatis untuk:

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

Dalam contoh khusus ini, aksesibilitas diaktifkan/dinonaktifkan sebelum/setelah masing-masing eksekusi modul pengujian. Dengan contoh sederhana yang ditunjukkan, untuk membahas detail lebih lanjut tentang cara 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 persiapan.

Tujuan sebenarnya dari {i>field <i}nilai bergantung pada cara persiapan ditentukan opsi: bisa berupa string, angka, boolean, atau bahkan jalur file. Berikut adalah ringkasan mengenai tiga pembuat target yang umum:

  • nama class: PushFilePreparer

    • short name: push-file
    • function: mendorong file arbitrer dalam folder kasus pengujian ke dalam tujuan di perangkat
    • catatan:
      • persiapan ini dapat {i>push<i} dari folder ke folder, atau file ke file; sehingga adalah, Anda tidak dapat mendorong file dalam folder di perangkat: Anda harus tentukan nama file tujuan di bawah folder itu juga
    • opsi:
      • push-file: Spesifikasi push, yang menentukan file lokal ke jalur di mana harus didorong pada perangkat. Dapat diulang. Jika lebih dari satu file dikonfigurasi untuk didorong ke jalur jarak jauh yang sama, yang 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/'. Dapat diulang. Jalur ini mungkin relatif terhadap direktori modul pengujian atau jalur direktori itu sendiri.
      • post-push: Perintah untuk dijalankan di perangkat (dengan `adb shell <your command>`) setelah semua push dicoba. Penggunaan umum menggunakan {i>chmod <i}untuk izin akses
  • nama class: InstallApkSetup

    • short name:install-apk
    • function: mendorong file apk arbitrer ke dalam tujuan alat
    • opsi:
      • test-file-name: nama apk yang akan diinstal untuk perangkat seluler.
      • install-arg: Argumen tambahan yang akan diteruskan ke penginstalan pm termasuk garis putus-putus, mis. "-d". Dapat diulang
  • nama class: RunCommandTargetPreparer

    • short name: run-command
    • fungsi: mengeksekusi perintah shell arbitrer sebelum atau setelah pengujian eksekusi modul
    • opsi:
      • run-command:perintah shell adb yang akan dijalankan. Dapat diulang
      • teardown-command:perintah shell adb yang akan dijalankan selama fase pembongkaran. Dapat diulang

Class pengujian

Class pengujian adalah class Trade Federation yang 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 adalah 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: instrumentasi
    • fungsi: Pengujian yang menjalankan paket uji instrumentasi pada 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 pada perangkat menggunakan perintah android.support.test.runner.AndroidJUnitRunner Ini adalah cara utama untuk menjalankan uji instrumentasi.