Platform için Android Studio (ASfP), atest ve Soong test modülleriyle entegre olur. Böylece, IDE'den Linux ana makinenizde, bağlı cihazınızda veya Cuttlefish sanal cihazınızda platform testlerini çalıştırıp hatalarını ayıklayabilirsiniz.
Ön koşullar
- AOSP ödemeniz ve
lunchhedefinizle yapılandırılmış bir ASfP projesi açın. - Cihaz testleri için fiziksel bir cihaz bağlayın veya eşleşen bir derlemenin çalıştığı bir Cuttlefish sanal cihazı başlatın.
Testleri çalıştırma ve hatalarını ayıklama
ASfP'de platform testlerini ve hata ayıklama oturumlarını birkaç yerden başlatabilirsiniz:
Android.bptest hedefleri: BirAndroid.bpdosyasını açın ve herhangi bir test modülünün (*_testveya*_test_host) yanındaki olukta Çalıştır'ı tıklayın:- Çalıştır: Tüm Soong test modülü türlerinde (
android_test,java_test_host,cc_test,rust_test,python_test,sh_testveandroid_robolectric_test) kullanılabilir. - Hata ayıklama:
android_testmodülleri (atest --wait-for-debuggerkullanılarak Java hata ayıklayıcı ile eklenmiş) ve C++ veya Rust test modülleri (cc_test,cc_test_host,rust_testverust_test_host, ASfP'nin yerleşik LLDB hata ayıklayıcısı altında başlatılmış) için kullanılabilir.
- Çalıştır: Tüm Soong test modülü türlerinde (
- Kaynak dosya oluğu simgeleri: Belirli bir testi çalıştırmak veya hata ayıklamak için kaynak kodunuzdaki bir test sınıfının ya da
@Testyönteminin yanındaki Çalıştır'ı tıklayın. - Sağ tıklama bağlam menüsü: Bir test dosyasını, sınıfı, yöntemi veya
Android.bpmodülünü sağ tıklayın ve Çalıştır ya da Hata ayıklama'yı seçin. - Yerleşik Yapay Zeka Aracı (Android Studio'da Yapay Zeka): Yapay Zeka Aracı araç penceresinde, Yerleşik Yapay Zeka Aracı, kodu düzenledikten sonra değişiklikleri doğrulamak için
atesthedeflerini çalıştırabilir. - Entegre terminal: View > Tool Windows > Terminal'i (Görünüm > Araç Pencereleri > Terminal) açarak
atestkomutlarını doğrudan çalıştırın.
Akıllı test yapılandırması ve hata ayıklama
Bir testi oluktan veya bağlam menüsünden başlattığınızda ASfP, Android.bp modül grafiğinizi kullanarak bir Soong Testi çalıştırma yapılandırması oluşturur ve yapılandırır.
android_test Java ve Kotlin hedeflerinde hata ayıklama
Android.bp içinde bir android_test modülünün veya bir Java ya da Kotlin JUnit sınıfının ya da @Test yönteminin yanındaki
oluk simgesini tıklayın ve Debug
'<TestName>' seçeneğini belirleyin. ASfP, bir kaynak dosyası oluğundan, srcs dosyayı içeren ve yapılandırmaya
<module>, <module>:<SimpleClass> veya <module>:<SimpleClass>#<method> adını veren en yakın kapsayan
android_test modülünü seçer.
ASfP, atest ile --wait-for-debugger'yi çalıştırır, hedef package özelliğini modülün AndroidManifest.xml'sinden okur, bağlı cihazda bu işlemin tamamlanmasını bekler ve Java hata ayıklayıcısını ekler.

LLDB altında cc_test ve rust_test hedeflerinde hata ayıklama
Bir C++ veya Rust test modülünde (cc_test, cc_test_host, rust_test veya rust_test_host) hata ayıklamak için Android.bp oluk simgesini tıklayın ve Debug
'<TestName>' seçeneğini belirleyin. ASfP, derlenmiş test ikilisini atest üzerinden çalıştırmak yerine yerleşik LLDB hata ayıklayıcısı altında başlatır.
Soong Test çalıştırma yapılandırmasını ayarlama
Run > Edit Configurations'ı (Çalıştır > Yapılandırmaları Düzenle) açın ve testlerin nasıl oluşturulacağını, dağıtılacağını ve başlatılacağını özelleştirmek için bir Soong Test yapılandırması seçin:
- Modül otomatik tamamlama ve
Android.bpgezinme: Modül alanı, projenizdeki dizine eklenmiş Soong test modüllerinden otomatik olarak tamamlanır.Android.bpiçindeki modülün bildirimine gitmek için alanın yanındaki Go to Android.bp'yi tıklayın. - Çalışma alanı: Cihaz veya ana makine (
host_supported: truedahil): ASfP, modül kuralını ve geçişlidefaultszincirini (host_supported,device_supported,enabled,target.android.enabledvetarget.host.enabled) değerlendirir:- Çift hedefli testler (
cc_testverust_testilehost_supported: true): Hem Cihaz hem de Ana Makine radyo düğmeleri kullanılabilir (varsayılan olarak Cihaz seçilidir). Cihaz ve Ana Makine, her biri kendi bağımsız LLDB hata ayıklayıcı şablonunu korur. Run on'u Device ve Host arasında değiştirerek her hedefte yapılan özelleştirmeleri korurken uzak cihazlldb-serveryapılandırması ile yerel ana makine ikili yapılandırması arasında geçiş yapabilirsiniz. - Tek hedefli testler: Bir C++ veya Rust testi yalnızca bir ortam için oluşturuluyorsa (ör. yalnızca cihaz
cc_testveya yalnızca ana makinecc_test_hostya darust_test_host), ASfP desteklenen hedefi seçer ve desteklenmeyen radyo düğmesini açıklayıcı bir ipucuyla devre dışı bırakır: "<module> (<ruleType>) doesn't build for the host or device."
- Çift hedefli testler (
- Lansman öncesi görevler (Yerel Test Modülü Oluşturma ve atest ile Dağıtma):
Her Soong Test yapılandırması varsayılan olarak iki Lansman öncesi görev içerir:
- Yerel Test Modülü Oluşturma: LLDB'yi başlatmadan önce
<module>-target(Cihaz için) veya<module>-host(Ana Makine için) oluşturur. - atest ile dağıtma: Cihaz'da hata ayıklama yapılırken
atest <module> --collect-tests-only --disable-teardown -it -s <serial> -- --abi <abi>çalıştırılır. Böylece Tradefed, test bağımlılıklarını gönderir ve LLDB ikiliyi başlatmadan önce hedef hazırlayıcıları yürütür. Tamatestkomutunu önizlemek için işaretçiyi Deploy with atest çipinin üzerine getirin. Bağımlılıklar cihazda bulunduktan sonra daha hızlı yineleme için Deploy with atest'i kaldırın. Böylece ASfP, yalnızca test ikilisini doğrudan gönderir. Şu cihazda çalıştır: Ana makine'yi seçtiğinizde ASfP, En son sürümle dağıt'ı otomatik olarak atlar.
- Yerel Test Modülü Oluşturma: LLDB'yi başlatmadan önce
- Seçenekleri değiştirme ve hata ayıklayıcı (LLDB seçenekleri kartları): İsteğe bağlı yapılandırma alanları eklemek için Seçenekleri değiştir'i kullanın:
- Program bağımsız değişkenleri (yalnızca işletim sistemi, C++ ve Rust testleri):
Hata ayıklama sırasında
--gtest_filterveyalibtestfiltresinden sonra doğrudancc_testveyarust_testikilisine iletilen ek bağımsız değişkenler. - atest bağımsız değişkenleri (Test): Test çalıştırılırken veya atest ile dağıt kullanılarak cihaz hazırlanırken
atest'e iletilen ek işaretler. - Hata ayıklayıcı (yalnızca C++ ve Rust testleri): Modül,
cc_test*veyarust_test*hedefi olduğunda gösterilir. LLDB seçenekleri kartlarını (ör. Rust testleri için Girişte durdur, Oturumlar arasında sembolleri önbelleğe al, Sembolleri isteğe bağlı olarak yükle veya Rust görselleştiricileriyle) değiştirin, etkin Cihaz veya Ana Makine şablonunu sıfırlamak için Varsayılanlara sıfırla'yı tıklayın ya da Seçenekleri değiştir > Hata ayıklayıcı'dan Sembol dizinleri, Başlatma, Ön çalıştırma, Çalıştırma sonrası veya Çıkış komutları ve Başlatma JSON'u'nu (DAP Ayarları) ekleyin.
- Program bağımsız değişkenleri (yalnızca işletim sistemi, C++ ve Rust testleri):
Hata ayıklama sırasında

Test sonuçlarını görüntüleme
Test yürütme ilerleme durumu, başarılı veya başarısız durumu, yığın izleri ve cihaz günlükleri, ASfP'deki Çalıştır veya Hata Ayıkla araç penceresinde anlık olarak gösterilir.
Testle ilgili ipuçları
- Hedeflenen testler çalıştırma: Bir test paketinin tamamını çalıştırmadan düzenleyici oluğundaki yöntemleri tek tek test edin.
- Cuttlefish anlık görüntülerini kullanma: Cuttlefish sanal cihazlarında cihaz testleri çalıştırırken çalıştırmalar arasında temiz bir cihaz durumu geri yüklemek için anlık görüntüleri kullanın.
- Soong derleme günlüklerini inceleyin: Bir test çalıştırılmadan önce derlenemezse derleyici teşhisleri için Soong araç penceresini kontrol edin.