Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Tes Instrumentasi

Pertama membaca Uji aplikasi Anda pada developer.android.com. Perhatikan ada beberapa perbedaan dalam cara pengujian instrumentasi digunakan dalam pengujian platform.

Singkatnya, tes instrumentasi menyediakan lingkungan eksekusi tes khusus sebagai diluncurkan melalui am instrument perintah, di mana proses aplikasi yang ditargetkan restart dan diinisialisasi dengan konteks aplikasi dasar, dan benang instrumentasi dimulai dalam proses aplikasi VM. Kode pengujian Anda memulai eksekusi pada thread instrumentasi ini dan disediakan dengan Instrumentation contoh yang menyediakan akses ke konteks aplikasi dan API untuk memanipulasi proses aplikasi yang diuji.

Konsep kunci

  • instrumentasi harus dinyatakan dalam sebuah paket aplikasi, dengan <instrumentation> tag bersarang di bawah <manifest> tag dari manifes paket aplikasi.
  • sebuah manifest paket aplikasi mungkin secara teknis berisi beberapa <instrumentation> tag, meskipun tidak umum digunakan dalam mode ini.
  • masing-masing <instrumentation> harus berisi:
    • sebuah android:name atribut: harus nama subclass dari Instrumentation yang termasuk dalam aplikasi tes, yang biasanya runner tes yang digunakan, misalnya: android.support.test.runner.AndroidJUnitRunner
    • sebuah android:targetPackage atribut harus didefinisikan. Nilainya harus disetel ke paket aplikasi yang sedang diuji.

Ringkasan langkah-langkah

  1. Di bawah ini adalah tujuan umum untuk pengujian kedap udara terhadap layanan kerangka kerja:

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    Jika Anda menambahkan modul instrumentasi baru untuk komponen Anda, lihat

  2. Mengikuti konvensi yang ada jika Anda menambahkan tes ke salah satu lokasi di atas. Jika Anda menyiapkan modul tes baru, ikuti setup AndroidManifest.xml dan Android.mk di salah satu lokasi di atas

  3. Lihat kerangka / base / core / tes / coretests / untuk contoh. Perhatikan baris ini menginstal aplikasi tambahan:

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. Jangan lupa untuk menandai tes Anda sebagai @SmallTest , @MediumTest atau @LargeTest

  5. Bangun modul pengujian dengan m, misalnya:

    m FrameworksCoreTests
    
  6. Jalankan tes:

    • Solusi paling sederhana adalah dengan menggunakan atest seperti:

      atest FrameworksCoreTests
      
    • Atau untuk tes yang lebih kompleks, gunakan Trade Federation uji Harness :

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. Jika tidak menggunakan Tradefed, instal dan jalankan tes secara manual:

    1. Instal apk yang dihasilkan:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    

    Tip: Anda menggunakan adb shell pm list instrumentation untuk menemukan instrumentasi dalam apk hanya diinstal

    1. Jalankan tes dengan berbagai opsi:

      1. semua tes di apk

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. semua tes di bawah paket Java tertentu

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. semua tes di bawah kelas tertentu

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. metode tes tertentu

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

Tes Anda dapat membuat pernyataan eksplisit pada lulus atau gagal menggunakan JUnit API; selain itu, pengecualian yang tidak tertangkap juga akan menyebabkan kegagalan fungsional.

Memancarkan metrik kinerja, kode pengujian Anda dapat menghubungi Instrumentation#sendStatus untuk mengirimkan daftar pasangan nilai kunci. Penting untuk dicatat bahwa:

  1. metrik dapat berupa bilangan bulat atau titik mengambang
  2. nilai non-numerik apa pun akan dibuang
  3. apk pengujian Anda dapat berupa tes fungsional atau tes metrik, namun pencampuran keduanya saat ini tidak didukung