Bir test

Atest ölçüde bilgisini gerektirmeden test tekrar çalışır hızlandırarak, yapı, yüklemek için kullanıcılar sağlar ve yerel olarak Android testler bir komut satırı aracıdır Ticaret Federasyonu testi koşum komut satırı seçenekleri. Bu sayfa, Android testlerini çalıştırmak için Atest'in nasıl kullanılacağını açıklar.

Android için testler yazma ile ilgili genel bilgi için bkz Android Platformu Testi .

ATEST genel yapısı hakkında bilgi için bkz ATEST Geliştirici Kılavuzu'na .

ATEST aracılığıyla TEST_MAPPING dosyalarında testleri çalıştırma hakkında bilgi için bkz TEST_MAPPING dosyalarında Testler çalıştırılıyor .

Ve ATEST için bir özellik eklemek için, aşağıdaki ATEST Geliştirici İş Akışı .

Ortamınızı ayarlama

Atest'i çalıştırmak için ortamınızı kurmak üzere aşağıdaki bölümlerdeki adımları izleyin.

Ortam değişkenini ayarla

Ayarlama test_suite Soong başına Make için veya LOCAL_COMPATIBILITY_SUITE script kurmak kurallarını Packaging .

envsetup.sh'yi çalıştırın

Android kaynak ödemesinin kökünden şunu çalıştırın:

source build/envsetup.sh

Öğle yemeğini çalıştır

Run lunch desteklenen cihazların bir menüyü getirmek için komut. Cihazı bulun ve bu komutu çalıştırın.

Örneğin, bağlı bir ARM cihazınız varsa, aşağıdaki komutu çalıştırın:

lunch aosp_arm64-eng

Bu ATEST çalıştırmak için gerekli olan çeşitli ortam değişkenlerini ayarlar ve atest komutunu ekler $PATH .

Temel kullanım

Atest komutları aşağıdaki formu alır:

atest test-to-run [optional-arguments]

İsteğe bağlı bağımsız değişkenler

Aşağıda en sık kullanılan argümanlar verilmiştir. Tam bir listesi aracılığıyla kullanılabilir atest --help .

Seçenek Uzun seçenek Açıklama
-b --build Test hedefleri oluşturur. (varsayılan)
-i --install Cihaza test yapılarını (APK'ler) yükler. (varsayılan)
-t --test Testleri çalıştırır. (varsayılan)
-s --serial Testleri belirtilen cihazda çalıştırır. Bir seferde bir cihaz test edilebilir.
-d --disable-teardown Test sökme ve temizlemeyi devre dışı bırakır.
--info Belirtilen hedeflerin ilgili bilgilerini gösterir ve çıkar.
--dry-run Gerçekte testler oluşturmadan, kurmadan ve çalıştırmadan kuru çalışma testi
-m --rebuild-module-info Kuvvetler arasında yeniden A module-info.json dosyası.
-w --wait-for-debugger Yürütmeden önce hata ayıklayıcıyı bekler. Sadece enstrümantasyon testleri için.
-v --verbose DEBUG seviyesi günlüğünü görüntüler.
--iterations Testleri maksimum yinelemeye ulaşılana kadar döngü çalıştırır. (varsayılan olarak 10)
--rerun-until-failure [COUNT=10] Bir hata oluşana veya maksimum yinelemeye ulaşılana kadar tüm testleri yeniden çalıştırır. (varsayılan olarak 10)
--retry-any-failure [COUNT=10] Başarısız testleri, geçilene veya maksimum yinelemeye ulaşılana kadar yeniden çalıştırır. (varsayılan olarak 10)
--start-avd Otomatik olarak bir AVD oluşturur ve sanal cihazda testler çalıştırır.
--acloud-create Kullanarak AVDs oluşturur acloud command.
--[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 bir cihaz olmadan tamamen ana bilgisayarda çalıştırır.
(Not: bir cihaz gerektirir bir konak testi çalışıyor --host başarısız olur.)
--flakes-info Pul bilgisiyle birlikte test sonucunu gösterir.
--history Test sonucunu kronolojik sırayla gösterir.
--latest-result En son test sonucunu yazdırır.

Hakkında daha fazla bilgi için -b , -i ve -t , bkz adımları belirleme: build, yükleme veya çalıştırmak.

Çalıştırılacak testler

Sen kullanarak bir veya daha fazla test edebilir test-to-run . Birden çok testi çalıştırmak için test referanslarını boşluklarla ayırın. Örneğin:

atest test-to-run-1 test-to-run-2

İşte bazı örnekler:

atest FrameworksServicesTests
atest example/reboot
atest FrameworksServicesTests CtsVideoTestCases
atest FrameworksServicesTests:ScreenDecorWindowTests

Bir test başvurmak konusunda daha fazla bilgi için, bkz testleri belirleme.

testleri belirleme

Sen belirtebilirsiniz test-to-run Class, sınıf adı, TF entegrasyon testi, dosya yolu veya paket adı: Testin modül adı, Modül ile argüman.

Modül Adı

Tüm bir test modülünü çalıştırmak için modül adını kullanın. Girdi o göründüğü gibi adı LOCAL_MODULE veya LOCAL_PACKAGE_NAME o testin değişkenler 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, Modül kullanın: Class. De tarif edildiği gibi modül aynı modül ismi . Sınıf test sınıfının adıdır .java dosyası ve tam nitelikli sınıf adı veya bazik bir ad olabilir.

Örnekler:

atest FrameworksServicesTests:ScreenDecorWindowTests
atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests
atest CtsVideoTestCases:VideoEncoderDecoderTest

Sınıf adı

Açıkça bir modül adı belirtmeden tek bir sınıfı çalıştırmak için sınıf adını kullanın.

Örnekler:

atest ScreenDecorWindowTests
atest VideoEncoderDecoderTest

Modül Kullanımı: Sınıf başvuru önerilir mümkünse ATEST hiçbir modül belirtildiği takdirde potansiyel maçları için tam kaynak ağacını aramak için daha fazla zaman gerektirir çünkü.

Örnekler (en hızlıdan en yavaşa doğru sıralanmıştır):

atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests
atest FrameworksServicesTests:ScreenDecorWindowTests
atest ScreenDecorWindowTests

TF entegrasyon testi

O çıkışında göründüğü gibi TradeFed (non-modüllere) doğrudan entegre edilmiştir testleri, giriş adını çalıştırmak için tradefed.sh list configs komutu. Örneğin:

Çalıştırmak için reboot.xml testi :

atest example/reboot

Çalıştırmak için native-benchmark.xml testi :

atest native-benchmark

Dosya yolu

Test dosyasına veya dizinine uygun yolu girerek hem modül tabanlı testleri hem de entegrasyon tabanlı testleri çalıştırabilirsiniz. Ayrıca, sınıfın Java dosyasının yolunu belirterek tek bir sınıfı çalıştırabilirsiniz. Hem göreli hem de mutlak yollar desteklenir.

Örnek: çalıştırmak için iki yol CtsVideoTestCases yolu üzerinden modülü

  1. Android'den Run modül repo-root :

    atest cts/tests/video
    
  2. Android itibaren repo-root / cts / testler / video:

    atest .
    

Örnek: içinde çalıştırın belirli sınıf CtsVideoTestCases yolu üzerinden modülü. Android itibaren repo-root :

atest cts/tests/video/src/android/video/cts/VideoEncoderDecoderTest.java

Örnek: Yol üzerinden bir entegrasyon testi çalıştırın. Android itibaren repo-root :

atest tools/tradefederation/contrib/res/config/example/reboot.xml

Paket ismi

Atest, testlerin paket adına göre aranmasını destekler.

Örnekler:

atest com.android.server.wm
atest com.android.uibench.janktests

Adımları belirtme: Oluşturun, kurun veya çalıştırın

Sen kullanarak çalıştırmak için hangi adımları belirtebilirsiniz -b , -i ve -t seçeneği. Bir seçenek belirtmezseniz, tüm adımlar çalışır.

  • Yapı hedefler yalnızca: atest -b test-to-run
  • : Sadece çalıştırın testler atest -t test-to-run
  • Apk kontrol ediyorlar yükleyin: atest -it test-to-run
  • Yapı ve koşmak, ama yüklemeyin: atest -bt test-to-run

Atest, bir testi temizleme/dağıtma adımını atlamaya zorlayabilir. Test çalıştırıldıktan sonra cihazdan kadar temiz bu tür KTS Birçok testler, bu yüzden birlikte test yeniden çalıştırın çalışırken -t olmadan başarısız olur --disable-teardown parametresi. Kullanım -d önce -t iteratif testi temiz yukarı adımını ve testi atlamak için.

atest -d test-to-run
atest -t test-to-run

Belirli yöntemleri çalıştırma

Bir test sınıfı içinde belirli yöntemleri çalıştırabilirsiniz. Tüm modülün oluşturulması gerekmesine rağmen, bu, testleri çalıştırmak için gereken süreyi azaltır. Belirli yöntemleri çalıştırmak için, bir sınıfı tanımlamak için desteklenen yollardan herhangi birini (Modül:Sınıf, dosya yolu, vb.) kullanarak sınıfı tanımlayın ve yöntemin adını ekleyin.

atest reference-to-class#method1

Virgülle birden fazla yöntem belirtebilirsiniz.

atest reference-to-class#method1,method2,method3

Örnekler:

atest com.android.server.wm.ScreenDecorWindowTests#testMultipleDecors
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval

Aşağıdaki iki örnek, tek bir yöntem çalıştırmak için tercih edilen yollar gösterir testFlagChange . Modülün veya Java dosya konumunun belirtilmesi, Atest'in testi çok daha hızlı bulmasını sağladığından, bu örnekler yalnızca sınıf adının kullanılmasına tercih edilir:

  1. Modül Kullanımı: Sınıf

    atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange
    
  2. Android'in itibaren repo-root

    atest frameworks/base/services/tests/wmtests/src/com/android/server/wm/ScreenDecorWindowTests.java#testFlagChange
    

Farklı sınıflardan ve modüllerden birden çok yöntem çalıştırılabilir:

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors

Birden çok sınıf çalıştırma

Birden çok sınıfı çalıştırmak için, bunları birden çok test çalıştırırken olduğu gibi boşluklarla ayırın. Atest, sınıfları verimli bir şekilde oluşturur ve çalıştırır, bu nedenle bir modülde sınıfların bir alt kümesini belirtmek, tüm modülü çalıştırmaya göre performansı artırır.

Örnekler:

  • Aynı modülde iki sınıf:

    atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests
    
  • Farklı modüllerde iki sınıf:

    atest FrameworksServicesTests:ScreenDecorWindowTests CtsVideoTestCases:VideoEncoderDecoderTest
    

Yerel testleri çalıştırma

Atest, yerel testler çalıştırabilir. Kullanım -a bu örnekte armeabi-v7a (kol 32-bit) ve arm64-V8A (ARM 64 bit) olan tüm cihaz mimarileri için testler.

Örnekler:

  • Giriş testleri:

    atest -a libinput_tests inputflinger_tests
    

Çalıştırılacak belirli bir yerel testi seçmek için, test adını belirtmek için iki nokta üst üste (:) ve ayrı bir yöntemi daha fazla belirtmek için hashtag (#) kullanın. Örneğin, aşağıdaki test tanımı için:

TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)

Sen kullanarak tüm test çalıştırabilirsiniz

atest inputflinger_tests:InputDispatcherTest

veya tek bir test yöntemi kullanılarak

atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents

Testleri TEST_MAPPING içinde çalıştırma

Atest, testleri TEST_MAPPING dosyalarında çalıştırabilir.

  1. Geçerli, üst veya belirli dizinlerdeki TEST_MAPPING dosyalarında örtük olarak ön gönderim testleri çalıştırın.

    Akım ve üst dizinlerde TEST_MAPPING dosyalarında çalıştır presubmit testler:

    atest
    

    TEST_MAPPING dosyalarında çalıştır presubmit testleri /path/to/project : üst dizinleri

    atest --test-mapping /path/to/project
    

  2. Dosyaları TEST_MAPPING belirtilen bir test grubu Run; Mevcut deney grupları şunlardır: presubmit (varsayılan), postsubmit , mainline-presubmit ve all .

    • Akım ve üst dizinlerde TEST_MAPPING dosyalarında çalıştır postsubmit testler:

      atest :postsubmit
      

    • TEST_MAPPING dosyalarında tüm gruplardan çalıştırın testler:

      atest :all
      

    • TEST_MAPPING dosyalarında çalıştır postsubmit testleri /path/to/project üst dizinleri

      atest --test-mapping /path/to/project:postsubmit
      

    • TEST_MAPPING dosyalarında yer ana hat testlerini /path/to/project ve üst dizinleri

      atest --test-mapping /path/to/project:mainline-presubmit
      

  3. Alt dizinler dahil olmak üzere TEST_MAPPING dosyalarında testler çalıştırın.

Varsayılan olarak, test yalnızca yukarı doğru TEST_MAPPING dosyalarındaki testleri arar (geçerli olandan veya üst dizinlerine verilenden). Ayrıca alt dizinleri TEST_MAPPING dosyalarında testler istiyorsanız, seçenek kullanabilirsiniz --include-subdirs sıra bu testler şunlardır atest zorlamak için.

Akım, ebeveynde TEST_MAPPING dosyalar ve alt dizinleri Run presubmit testler:

atest --include-subdirs /path/to/project

Yinelemede testler çalıştırma

Yineleme testler gerçekleştirmek için, sadece geçen --iterations argüman. Başarılı olsun veya olmasın, test, maksimum yinelemeye ulaşılana kadar testi durdurmaz.

Örnekler:

Varsayılan olarak, test 10 kez yinelenir ve yineleme turunu değiştirmek için bir tamsayı verir.

atest test-to-run --iterations
atest test-to-run --iterations 5

Kullanıcıların lapa lapa testleri algılamasına yardımcı olan iki yaklaşım:

Yaklaşım 1: Bir hata oluşana veya maksimum yinelemeye ulaşılana kadar tüm testleri çalıştırın.

  • Bir hata oluştuğunda veya yineleme 10. tura (varsayılan olarak) ulaştığında durun.
    atest test-to-run --rerun-until-failure
    
  • Bir hata oluştuğunda veya yineleme 100. tura ulaştığında durun.
    atest test-to-run --rerun-until-failure 100
    

Yaklaşım 2: Geçilene veya maksimum yinelemeye ulaşılana kadar yalnızca başarısız testleri çalıştırın.

  • Varsayalım test-to-run beş test durumları ve testlerden biri başarısız vardır. Yalnızca başarısız testi 10 kez veya test geçene kadar çalıştırın.
    atest test-to-run --retry-any-failure
    
  • 100. raundu geçtiğinde veya ulaştığında başarısız testi çalıştırmayı bırakın.
    atest test-to-run --retry-any-failure 100
    

AVD'lerde testler çalıştırma

Atest, yeni oluşturulan AVD ile testleri çalıştırabilir. Atest çalışan ile birlikte eserler inşa edebilirsiniz acloud create ve AVD sonra çalıştırma testleri başarıyla oluşturuldu.

Örnekler:

  • Yeni oluşturulan cihazda testler çalıştırmadan önce bir AVD başlatın:

    acloud create --local-instance --local-image && atest test-to-run
    

  • Specifing AVDs başlayın acloud create Yeni oluşturulan cihazda argümanları kontrol ediyorlar.

    atest test-to-run --acloud-create "--local-instance --local-image"
    

Çalıştırmak, argüman ilgili kullanım detayını almak için acloud create --help .

Modüle seçenekleri iletin

Atest modüllere opsiyon geçirebilmektedir. TradeFed komut satırı seçeneği eklemek atest komut satırında kısa biçimidir

atest test-to-run -- [CUSTOM_ARGS]
[CUSTOM_ARGS] Tradefed komut satırı seçeneği biçimlerini takip etmelidir.

Test yapılandırma dosyasında tanımlanan hazırlayıcıları veya test çalıştırıcılarını hedeflemek için test modülü seçeneklerini geçme örnekleri:

atest test-to-run -- --module-arg module-name:option-name:option-value
atest GtsPermissionTestCases -- --module-arg GtsPermissionTestCases:ignore-business-logic-failure:true

Koşucu tipine veya sınıfına geçme seçeneklerine örnekler:

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

Test sadece seçenekleri hakkında daha fazla bilgi için bkz modülleri Geçiş seçenekleri