Atest, kullanıcıların derleme, yükleme ve çalıştırma işlemleri yapmasına olanak tanıyan bir komut satırı aracıdır Android'in yerel olarak test etmesi, testlerin tekrar tekrar çalıştırılmasını gerektirmeden Ticaret Federasyonu test kullanımı hakkında bilgi komut satırı seçenekleri. Bu sayfada, Android'i çalıştırmak için Atest'in nasıl kullanılacağı açıklanmaktadır. testler.
Android için test yazma hakkında genel bilgi edinmek istiyorsanız bkz. Android Platformu Testi.
Atest'in genel yapısı hakkında bilgi edinmek için Geliştirici Kılavuzu'nu test edin.
Atest aracılığıyla TEST_MAPPING dosyalarında test çalıştırma hakkında bilgi için bkz. TEST_MAPPING dosyalarında test çalıştırma.
Atest'e özellik eklemek için Geliştirici İş Akışını Onayla'yı seçin.
Ortamınızı ayarlama
Atest ortamınızı ayarlamak için Ortam oluşturma, Hedef seçme ve Kodu derleme bölümündeki talimatları uygulayın.
Temel kullanım
Atest komutları aşağıdaki biçimdedir:
atest test-to-run [optional-arguments]
İsteğe bağlı bağımsız değişkenler
Aşağıdaki tabloda en yaygın kullanılan bağımsız değişkenler listelenmiştir. Tam liste
atest --help
aracılığıyla kullanılabilir.
Option | Uzun seçenek | Açıklama |
---|---|---|
-b |
--build |
Test hedefleri oluşturur. (varsayılan) |
-i |
--install |
Cihaza test yapılarını (APK) yükler. (varsayılan) |
-t |
--test |
Testleri çalıştırır. (varsayılan) |
-s |
--serial |
Testleri belirtilen cihazda çalıştırır. Aynı anda yalnızca bir cihaz test edilebilir. |
-d |
--disable-teardown |
Testin sökümünü ve temizlemesini devre dışı bırakır. |
|
--dry-run |
Kuru çalıştırma Testleri gerçekten derlemeden, yüklemeden veya çalıştırmadan test etme. |
-m |
--rebuild-module-info |
module-info.json dosyasının yeniden oluşturulmasını zorunlu kılar. |
-w |
--wait-for-debugger |
Yürütmeden önce hata ayıklayıcının bitmesini bekler. |
-v |
--verbose |
HATA AYIKLAMA düzeyinde günlük kaydını gösterir. |
|
--iterations |
Döngü, maksimum yinelemeye ulaşılana kadar testleri çalıştırır. (varsayılan olarak 10) |
|
--rerun-until-failure [COUNT=10] |
Bir hata oluşana veya maksimum iterasyon değeri eşit olana kadar tüm testleri tekrar çalıştırır ulaştı. (varsayılan olarak 10) |
|
--retry-any-failure [COUNT=10] |
Başarısız testler, geçilene veya maksimum iterasyon değerine ulaşılana kadar tekrar çalıştırılır. (10 varsayılan olarak) |
|
--start-avd |
Otomatik olarak bir ortalama görüntüleme süresi oluşturur ve sanal cihazda testleri çalıştırır. |
|
--acloud-create |
acloud komutunu kullanarak ortalama görüntüleme süresi oluşturur. |
|
--[CUSTOM_ARGS] |
Test çalıştırıcıları için özel bağımsız değişkenleri belirtir. |
-a |
--all-abi |
Mevcut tüm cihaz mimarileri için testleri çalıştırır. |
|
--host |
Testi, cihaz olmadan ana makinede tamamen çalıştırır. Not: --host yüklü bir cihaz gerektiren bir ana makine testi çalıştırılıyor
başarısız olur. |
|
--history |
Test sonuçlarını kronolojik sırada gösterir. |
|
--latest-result |
En son test sonucunu yazdırır. |
-b
, -i
ve -t
hakkında daha fazla bilgi için
Adımları belirtin: Derleme, yükleme veya çalıştırma bölümü.
Testleri belirtin
Testleri çalıştırmak için aşağıdakilerden birini kullanarak bir veya daha fazla test belirtin tanımlayıcılar:
- Modül adı
- Modül:Sınıf
- Sınıf adı
- Tradefed entegrasyon testi
- Dosya yolu
- Paket adı
Birden fazla teste yapılan referansları boşlukla ayırın. Örneğin:
atest test-identifier-1 test-identifier-2
Modül adı
Bir test modülünün tamamını çalıştırmak için modül adını kullanın. Adı göründüğü gibi girin
söz konusu testin LOCAL_MODULE
veya LOCAL_PACKAGE_NAME
değişkenlerinde
Android.mk
veya Android.bp
dosyası.
Örnekler:
atest FrameworksServicesTests
atest CtsVideoTestCases
Modül:Sınıf
Bir modül içinde tek bir sınıf çalıştırmak için Module:Class seçeneğini kullanın. Modül,
Modül adı bölümünde açıklandığı şekildedir. Sınıf, sınıfın adıdır.
.java
dosyasında test sınıfıdır; tam sınıf adı veya
temel ad.
Örnekler:
atest CtsVideoTestCases:VideoEncoderDecoderTest
atest FrameworksServicesTests:ScreenDecorWindowTests
atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests
Sınıf adı
Modül adını açıkça belirtmeden tek bir sınıfı çalıştırmak için ilgili sınıfı kullanın. dokunun.
Örnekler:
atest ScreenDecorWindowTests
atest VideoEncoderDecoderTest
Tradefed entegrasyon testi
Doğrudan TradeFed'e (modül olmayanlar) entegre testler çalıştırmak için
adını tradefed.sh list configs
komutunun çıkışında göründüğü şekilde kullanın. Örneğin,
örnek:
atest example/reboot
atest native-benchmark
Dosya yolu
Atest, Google Analytics 4'e göre hem modül tabanlı test dosyasının veya dizininin yolunu uygun şekilde girerek. Aynı zamanda sınıfın Java dosyasının yolunu belirterek tek bir sınıfın çalıştırılmasını destekler. Hem göreli hem de mutlak yollar desteklenir.
Modül çalıştırma
Aşağıdaki örnekler, CtsVideoTestCases
modülünü aşağıdakileri kullanarak çalıştırmanın iki yolunu gösterir:
olabilir.
Android repo-root
'ten çalıştırma:
atest cts/tests/video
Android repo-root/cts/tests/video
sürümünden çalıştırma:
atest .
Test sınıfı çalıştırma
Aşağıdaki örnekte, dosya yolu kullanılarak CtsVideoTestCases
modülündeki belirli bir sınıfın nasıl çalıştırılacağı gösterilmektedir.
Android repo-root
'den:
atest cts/tests/video/src/android/video/cts/VideoEncoderDecoderTest.java
Entegrasyon testi çalıştırma
Aşağıdaki örnekte, Android repo-root
'teki bir dosya yolu kullanılarak entegrasyon testinin nasıl çalıştırılacağı gösterilmektedir:
atest tools/tradefederation/contrib/res/config/example/reboot.xml
Paket adı
Atest, paket adına göre testleri aramayı destekler.
Örnekler:
atest com.android.server.wm
atest com.android.uibench.janktests
Adımları belirtin: Derleme, yükleme veya çalıştırma
Uygulanacak adımları belirtmek için -b
, -i
ve -t
seçeneklerini kullanın. Eğer
bir seçenek belirtmezseniz tüm adımlar uygulanır.
- Yalnızca hedefler oluşturun:
atest -b test-to-run
- Yalnızca testleri çalıştır:
atest -t test-to-run
- Apk'yi yükleyin ve testleri çalıştırın:
atest -it test-to-run
- Derleyin ve çalıştırın ancak yüklemeyin:
atest -bt test-to-run
Atest, bir testi temizleme veya ayırma adımını atlamaya zorlayabilir. Örneğin,
CTS, test çalıştırıldıktan sonra cihazı temizleyin. Bu nedenle testinizi tekrar çalıştırmaya çalışın
-t
ile başlayan kod, --disable-teardown
parametresi olmadan başarısız olur. Test temizleme adımını atlamak ve iteratif olarak test etmek için -d
önce -t
kullanın.
atest -d test-to-run
atest -t test-to-run
Belirli yöntemleri çalıştırma
Atest, test sınıfında belirli yöntemlerin çalıştırılmasını destekler. Bütün modülünün geliştirilmesi gerekir, bu da testlerin yürütülmesi için gereken süreyi azaltır. Çalıştırmak için bir yöntem belirlemek için, desteklenen yöntemlerden herhangi birini kullanarak bir sınıf tanımlama (Modül:Sınıf, dosya yolu vb.) ve sınıfınızın adını yöntem:
atest reference-to-class#method1
Birden çok yöntem belirtirken yöntemleri virgülle ayırın:
atest reference-to-class#method1,method2,method3
Örnekler:
atest com.android.server.wm.ScreenDecorWindowTests#testMultipleDecors
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval
Aşağıdaki iki örnekte, tek bir yöntemi çalıştırmak için tercih edilen yöntemler gösterilmektedir:
testFlagChange
Bu örnekler, yalnızca sınıf adı kullanımına tercih edilir
çünkü modülü veya Java dosya konumunu belirtmek, Atest'in
çok daha hızlı test edebilir.
Modül:Sınıfı Kullanma:
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange
Android repo-root'den:
atest frameworks/base/services/tests/wmtests/src/com/android/server/wm/ScreenDecorWindowTests.java#testFlagChange
Farklı sınıf ve modüllerde birden çok yöntem çalıştırılabilir:
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors
Birden fazla sınıfa katılın
Birden fazla sınıf yayınlamak için sınıfları koşuyla aynı şekilde boşluklarla ayırın. birden fazla teste tabi tutulur. Atest, sınıfları verimli şekilde oluşturur ve çalıştırır. Bu nedenle, bir modüldeki sınıfların alt kümesi bütünü çalıştırmaya kıyasla performansı artırır modülünü kullanabilirsiniz.
Aynı modülde iki sınıf çalıştırmak için:
atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests
Farklı modüllerde iki sınıf çalıştırmak için:
atest FrameworksServicesTests:ScreenDecorWindowTests CtsVideoTestCases:VideoEncoderDecoderTest
GTest ikili programlarını çalıştırma
Atest, GTest ikili programlarını çalıştırabilir. Mevcut tüm testlerde bu testleri çalıştırmak için -a
kullanın
cihaz mimarilerini inceleyelim. Bu örnekte: armeabi-v7a
(ARM 32 bit) ve
arm64-v8a
(ARM 64 bit).
Örnek giriş testi:
atest -a libinput_tests inputflinger_tests
Çalıştırılacak belirli bir GTest ikili programı seçmek için, testi belirtmek üzere iki nokta üst üste (:) kullanın adı ve bir hashtag (#) ekleyin.
Örneğin, aşağıdaki test tanımı için:
TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)
Testin tamamını belirtmek için aşağıdaki komutu çalıştırın:
atest inputflinger_tests:InputDispatcherTest
Alternatif olarak, aşağıdakileri kullanarak bağımsız bir test de çalıştırabilirsiniz:
atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents
TEST_MAPPING testlerini çalıştırın
Atest, TEST_MAPPING
dosyalarında test çalıştırabilir.
Gönderme öncesi testleri dolaylı olarak çalıştırma
Mevcut ve üst dizinlerdeki TEST_MAPPING
dosyalarında göndermeden önce testleri çalıştırın:
atest
/path/to/project ve TEST_MAPPING
dosyalarında gönderme öncesi testleri çalıştırın ve
aşağıdaki dizinlere bakabilirsiniz:
atest --test-mapping /path/to/project
Belirli bir test grubunu çalıştırın
Kullanılabilir test grupları şunlardır: presubmit
(varsayılan), postsubmit
,
mainline-presubmit
ve all
.
Mevcut ve üst dizinlerdeki TEST_MAPPING dosyalarında gönderim sonrası testleri çalıştırın:
atest :postsubmit
TEST_MAPPING dosyalarındaki tüm gruplardan testler çalıştırın:
atest :all
/path/to/project içindeki TEST_MAPPING dosyalarında gönderim sonrası testleri çalıştırın ve aşağıdaki dizinlere bakabilirsiniz:
atest --test-mapping /path/to/project:postsubmit
/path/to/project ve üst dizinlerindeki TEST_MAPPING dosyalarında ana hat testlerini çalıştırın:
atest --test-mapping /path/to/project:mainline-presubmit
Alt dizinlerde test çalıştırma
Atest, varsayılan olarak yalnızca yukarıya doğru (TEST_MAPPING dosyalarında)
dizini üst dizinlerine eklemeniz gerekir). Alt dizinlerdeki TEST_MAPPING dosyalarında da test çalıştırmak istiyorsanız Atest'i bu testleri de dahil etmeye zorlamak için --include-subdirs
kullanın:
atest --include-subdirs /path/to/project
Testleri yinelemeli şekilde çalıştırma
--iterations
bağımsız değişkenini ileterek testleri yinelemeli şekilde çalıştırın. Sınavı geçip geçmediği
ya da başarısız olursa Atest, maksimum yinelemeye ulaşılana kadar testi tekrarlar.
Örnekler:
Atest, varsayılan olarak 10 kez yineleme yapar. Yineleme sayısı pozitif bir sayı olmalıdır tamsayı.
atest test-to-run --iterations
atest test-to-run --iterations 5
Aşağıdaki yaklaşımlar, güvenilir olmayan testleri tespit etmeyi kolaylaştırır:
1. Yaklaşım: Bir hata oluşana veya maksimum yineleme sayısına ulaşılana kadar tüm testleri çalıştırın.
- Bir hata oluştuğunda veya iterasyon 10. (varsayılan olarak) raunta ulaştığında durur.
atest test-to-run --rerun-until-failure
- Bir hata oluştuğunda veya iterasyon 100. tura ulaştığında durur.
atest test-to-run --rerun-until-failure 100
2. Yaklaşım: Bu testler geçilene veya maksimum yineleme sınırına ulaşılana kadar yalnızca başarısız testleri çalıştırın.
test-to-run
kullanıcısının birden fazla test durumu ve şunlardan birinin olduğunu varsayın: testler başarısız olur. Başarısız testi yalnızca 10 kez (varsayılan olarak) veya test başarılı olur.atest test-to-run --retry-any-failure
- 100. tura ulaştığında veya 100. tura ulaştığında başarısız testi çalıştırmayı durdurun.
atest test-to-run --retry-any-failure 100
AVD'lerde test çalıştırma
Atest, yeni oluşturulan bir ortalama görüntüleme süresinde test yapabilir. AVD oluşturmak ve yapı oluşturmak için acloud create
'ü çalıştırın, ardından testlerinizi çalıştırmak için aşağıdaki örnekleri kullanın.
Bir ortalama görüntüleme süresi (AVD) başlatıp bununla ilgili testler yapabilirsiniz:
acloud create --local-instance --local-image && atest test-to-run
Test çalışması kapsamında bir AVD başlatma:
atest test-to-run --acloud-create "--local-instance --local-image"
Daha fazla bilgi için acloud create --help
komutunu çalıştırın.
Modüle kart seçenekleri
Atest, test modüllerine seçenekler iletebilir. TradeFed komut satırı eklemek için seçenekleri kullanıyorsanız, aşağıdaki yapıyı kullanın ve özel bağımsız değişkenler, Tradefed komut satırı seçenek biçimini kullanır.
atest test-to-run -- [CUSTOM_ARGS]
test yapılandırma dosyası:
atest test-to-run -- --module-arg module-name:option-name:option-value
atest GtsPermissionTestCases -- --module-arg GtsPermissionTestCases:ignore-business-logic-failure:true
Bir koşucu türü veya sınıfına geçme seçenekleri:
atest test-to-run -- --test-arg test-class:option-name:option-value
atest CtsVideoTestCases -- --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true
Yalnızca test amaçlı seçenekler hakkında daha fazla bilgi edinmek için bkz. Modüllerdeki geçiş seçenekleri.