Menguji kode platform dengan atest

Android Studio for Platform (ASfP) terintegrasi dengan modul pengujian atest dan Soong sehingga Anda dapat menjalankan dan men-debug pengujian platform di mesin host Linux, perangkat terhubung, atau perangkat virtual Cuttlefish dari IDE.

Prasyarat

  • Buka project ASfP yang dikonfigurasi dengan checkout AOSP dan target lunch Anda.
  • Untuk pengujian perangkat, hubungkan perangkat fisik atau luncurkan perangkat virtual Cuttlefish yang menjalankan build yang cocok.

Menjalankan dan men-debug pengujian

Anda dapat meluncurkan pengujian platform dan sesi debug dari beberapa tempat di ASfP:

  • Target pengujian Android.bp: Buka file Android.bp dan klik Run di gutter di samping modul pengujian (*_test atau *_test_host):
    • Run: Tersedia untuk semua jenis modul pengujian Soong (android_test, java_test_host, cc_test, rust_test, python_test, sh_test, dan android_robolectric_test).
    • Debug: Tersedia untuk modul android_test (terlampir dengan debugger Java menggunakan atest --wait-for-debugger) dan modul pengujian C++ atau Rust (cc_test, cc_test_host, rust_test, dan rust_test_host, diluncurkan di bawah debugger LLDB bawaan ASfP).
  • Ikon gutter file sumber: Klik Run di samping class pengujian atau metode @Test dalam kode sumber untuk menjalankan atau men-debug pengujian tertentu tersebut.
  • Menu konteks klik kanan: Klik kanan file, class, metode, atau modul Android.bp, lalu pilih Run atau Debug.
  • Agen Bawaan (AI di Android Studio): Di jendela alat Agen, Agen Bawaan dapat menjalankan target atest untuk memverifikasi perubahan setelah mengedit kode.
  • Terminal terintegrasi: Buka View > Jendela Alat > Terminal untuk menjalankan perintah atest secara langsung.

Konfigurasi dan proses debug pengujian cerdas

Saat Anda meluncurkan pengujian dari gutter atau menu konteks, ASfP akan membuat dan mengonfigurasi konfigurasi eksekusi Soong Test menggunakan grafik modul Android.bp Anda.

Men-debug target android_test Java dan Kotlin

Klik ikon gutter di samping modul android_test dalam Android.bp, atau di samping metode @Test atau class JUnit Java atau Kotlin, lalu pilih Debug '<TestName>'. Dari gutter file sumber, ASfP memilih modul android_test terdekat yang srcs-nya menyertakan file dan memberi nama konfigurasi <module>, <module>:<SimpleClass>, atau <module>:<SimpleClass>#<method>.

ASfP menjalankan atest dengan --wait-for-debugger, membaca atribut package target dari AndroidManifest.xml modul, menunggu proses tersebut di perangkat terhubung, dan melampirkan debugger Java.

Men-debug metode android_test dari gutter editor

Men-debug target cc_test dan rust_test di LLDB

Untuk men-debug modul pengujian C++ atau Rust (cc_test, cc_test_host, rust_test, atau rust_test_host), klik ikon gutter Android.bp dan pilih Debug '<TestName>'. ASfP meluncurkan biner pengujian yang dikompilasi di bawah debugger LLDB bawaannya, bukan menjalankannya melalui atest.

Mengonfigurasi konfigurasi pengujian Soong

Buka Run > Edit Configurations dan pilih konfigurasi Soong Test untuk menyesuaikan cara build, deployment, dan peluncuran pengujian:

  • Penyelesaian otomatis modul dan navigasi Android.bp: Kolom Module melakukan penyelesaian otomatis dari modul pengujian Soong yang diindeks dalam project Anda. Klik Go to Android.bp di samping kolom untuk membuka deklarasi modul di Android.bp.
  • Jalankan di: Perangkat atau Host (termasuk host_supported: true): ASfP mengevaluasi aturan modul dan rantai transitif defaults-nya (host_supported, device_supported, enabled, target.android.enabled, dan target.host.enabled):
    • Pengujian target ganda (cc_test dan rust_test dengan host_supported: true): Tombol pilihan Perangkat dan Host tersedia (secara default Perangkat). Perangkat dan Host masing-masing mempertahankan template debugger LLDB independennya sendiri. Beralihnya Run on antara Device dan Host akan menukar konfigurasi lldb-server perangkat jarak jauh dan konfigurasi biner host lokal sekaligus mempertahankan penyesuaian yang dilakukan pada setiap target.
    • Pengujian target tunggal: Jika pengujian C++ atau Rust hanya dibuat untuk satu lingkungan (seperti cc_test khusus perangkat atau cc_test_host atau rust_test_host khusus host), ASfP akan memilih target yang didukung dan menonaktifkan tombol pilihan yang tidak didukung dengan tooltip penjelasan: "<module> (<ruleType>) doesn't build for the host or device."
  • Tugas sebelum peluncuran (Membangun Modul Pengujian Native dan Men-deploy dengan atest): Setiap konfigurasi Soong Test mencakup dua tugas Sebelum peluncuran secara default:
    • Build Native Test Module: Membangun <module>-target (untuk Perangkat) atau <module>-host (untuk Host) sebelum memulai LLDB.
    • Deploy dengan atest: Saat melakukan proses debug di Perangkat, akan menjalankan atest <module> --collect-tests-only --disable-teardown -it -s <serial> -- --abi <abi> sehingga Tradefed akan mengirimkan dependensi pengujian dan mengeksekusi penyiapan target sebelum LLDB meluncurkan biner. Arahkan kursor ke chip Deploy with atest untuk melihat pratinjau perintah atest yang tepat. Untuk iterasi yang lebih cepat setelah dependensi sudah ada di perangkat, hapus Deploy with atest sehingga ASfP hanya mengirimkan biner pengujian secara langsung. Saat Anda memilih Jalankan di: Host, ASfP akan otomatis melewati Deploy dengan terbaru.
  • Opsi ubah dan Debugger (kartu opsi LLDB): Gunakan Opsi ubah untuk menambahkan kolom konfigurasi opsional:
    • Argumen program (Sistem Operasi, khusus pengujian C++ dan Rust): Argumen tambahan yang diteruskan langsung ke biner cc_test atau rust_test setelah filter --gtest_filter atau libtest saat proses debug.
    • Argumen atest (Test): Flag tambahan yang diteruskan ke atest saat menjalankan pengujian atau saat menyiapkan perangkat dengan Deploy with atest.
    • Debugger (khusus pengujian C++ dan Rust): Ditampilkan saat Module adalah target cc_test* atau rust_test*. Aktifkan kartu LLDB options (seperti Stop on entry, Cache symbols across sessions, Load symbols on demand, atau With Rust visualizers untuk pengujian Rust), klik Reset to defaults untuk mereset template Device atau Host yang aktif, atau tambahkan Symbol directories, Init, Pre-run, Post-run, atau Exit commands, dan Launch JSON (DAP Settings) dari Modify options > Debugger.

Konfigurasi run Soong Test yang menampilkan tugas Sebelum peluncuran, target Perangkat atau Host, dan opsi LLDB

Melihat hasil pengujian

Progres eksekusi uji, status lulus atau gagal, stack trace, dan log perangkat muncul secara real time di dalam jendela alat Run atau Debug di ASfP.

Tips untuk pengujian

  • Menjalankan pengujian yang ditargetkan: Uji setiap metode dari gutter editor tanpa menjalankan seluruh suite pengujian.
  • Menggunakan snapshot Cuttlefish: Saat menjalankan pengujian perangkat di perangkat virtual Cuttlefish, gunakan snapshot untuk memulihkan status perangkat yang bersih di antara proses.
  • Periksa log build Soong: Jika pengujian gagal dikompilasi sebelum dijalankan, periksa jendela alat Soong untuk melihat diagnostik compiler.