Koşu Testleri (Atest), Koşu Testleri (Atest)

Atest, kullanıcıların yerel olarak Android testleri oluşturmasına, yüklemesine ve çalıştırmasına olanak tanıyan ve Trade Federation test donanımı komut satırı seçenekleri hakkında bilgi gerektirmeden test yeniden çalıştırmalarını büyük ölçüde hızlandıran bir komut satırı aracıdır. Bu sayfa, Android testlerini çalıştırmak için Atest'in nasıl kullanılacağını açıklar.

Android için test yazma hakkında genel bilgi için Android Platform Testi bölümüne bakın.

Atest'in genel yapısı hakkında bilgi için Atest Geliştirici Kılavuzu'na bakın.

Atest aracılığıyla TEST_MAPPING dosyalarında testler çalıştırma hakkında bilgi için, bkz . TEST_MAPPING dosyalarında testleri çalıştırma .

Atest'e bir özellik eklemek için Atest Geliştirici İş Akışını takip edin.

Ortamınızı ayarlama

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

Ortam değişkenini ayarla

Soong için test_suite veya Make aşağıdaki Paketleme oluşturma komut dosyası kuralları için LOCAL_COMPATIBILITY_SUITE ayarlayın.

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

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

source build/envsetup.sh

lunch çalıştır

Desteklenen cihazların bir menüsünü getirmek için lunch komutunu çalıştırın. 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'i çalıştırmak için gereken çeşitli ortam değişkenlerini ayarlar ve Atest komutunu $PATH dosyanıza ekler.

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ğıdaki tablo en sık kullanılan bağımsız değişkenleri listeler. Tam bir listeye atest --help aracılığıyla ulaşılabilir.

Seçenek Uzun seçenek Tanım
-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.
<c> --info Belirtilen hedeflerle ilgili bilgileri gösterir ve ardından çıkar.
<c> --dry-run Testleri gerçekten oluşturmadan, kurmadan veya çalıştırmadan kuru çalışır.
-m --rebuild-module-info module-info.json dosyasının yeniden oluşturulmasını zorlar.
-w --wait-for-debugger Yürütmeden önce hata ayıklayıcının bitmesini bekler.
-v --verbose DEBUG seviyesi günlüğünü görüntüler.
<c> --iterations Döngü testleri, maksimum yinelemeye ulaşılana kadar çalıştırır. (varsayılan olarak 10)
<c> --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)
<c> --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)
<c> --start-avd Otomatik olarak bir AVD oluşturur ve sanal cihazda testler çalıştırır.
<c> --acloud-create acloud komutunu kullanarak bir AVD oluşturur.
<c> --[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.
<c> --host Testi bir cihaz olmadan tamamen ana bilgisayarda çalıştırır.
Not: --host içeren bir cihaz gerektiren bir ana bilgisayar testinin çalıştırılması başarısız olur.
<c> --flakes-info Pul bilgisiyle birlikte test sonucunu gösterir.
<c> --history Test sonuçlarını kronolojik sırayla gösterir.
<c> --latest-result En son test sonucunu yazdırır.

-b , -i ve -t hakkında daha fazla bilgi için Adımları belirtin: oluşturma, yükleme veya çalıştırma bölümüne bakın.

Testleri belirtin

Testleri çalıştırmak için aşağıdaki tanımlayıcılardan birini kullanarak bir veya daha fazla test belirtin:

  • Modül Adı
  • Modül: Sınıf
  • Sınıf adı
  • Tradefed entegrasyon testi
  • Dosya yolu
  • Paket ismi

Aşağıdaki gibi boşluklu çoklu testlere ayrı referanslar:

atest test-identifier-1 test-identifier-2

Modül Adı

Tüm bir test modülünü çalıştırmak için modül adını kullanın. Adı, bu testin Android.mk veya Android.bp dosyasındaki LOCAL_MODULE veya LOCAL_PACKAGE_NAME değişkenlerinde göründüğü gibi girin.

Ö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 kullanın. Modül , Modül adı bölümünde açıklananla aynıdır. Sınıf , .java dosyasındaki test sınıfının adıdır ve tam nitelikli sınıf adı veya temel ad olabilir.

Örnekler:

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

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

Tradefed entegrasyon testi

Doğrudan TradeFed'e (modül olmayan) entegre edilmiş testleri çalıştırmak için, tradefed.sh list configs komutunun çıktısında göründüğü gibi adı girin. Örneğin:

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

atest example/reboot

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

atest native-benchmark

Dosya yolu

Atest, uygun şekilde test dosyasına veya dizinine giden yolu girerek hem modül tabanlı testleri hem de entegrasyon tabanlı testleri çalıştırmayı destekler. Ayrıca, sınıfın Java dosyasının yolunu belirterek tek bir sınıfın çalıştırılmasını da destekler. Hem göreli hem de mutlak yollar desteklenir.

Modül çalıştır

Aşağıdaki örnekler, bir dosya yolu kullanarak CtsVideoTestCases modülünü çalıştırmanın iki yolunu gösterir.

Android repo-root çalıştırın:

atest cts/tests/video

Android repo-root/cts/tests/video çalıştırın:

    atest .

Bir test sınıfı çalıştırın

Aşağıdaki örnek, bir dosya yolu kullanarak CtsVideoTestCases modülü içinde belirli bir sınıfın nasıl çalıştırılacağını gösterir.

Android repo-root :

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

Bir entegrasyon testi çalıştırın

Aşağıdaki örnek, Android repo-root bir dosya yolu kullanarak bir entegrasyon testinin nasıl çalıştırılacağını gösterir:

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

Paket ismi

Atest, paket adına göre test aramayı destekler.

Örnekler:

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

Adımları belirtin: Derleyin, kurun veya çalıştırın

Hangi adımların çalıştırılacağını belirtmek için -b , -i ve -t seçeneklerini kullanın. Bir seçenek belirtmezseniz, tüm adımlar çalışır.

  • Yalnızca derleme hedefleri: atest -b test-to-run
  • Yalnızca testleri çalıştırın: atest -t test-to-run
  • Apk yükleyin ve testleri çalıştırın: atest -it test-to-run
  • Derleyin ve çalıştırın, ancak kurmayın: atest -bt test-to-run

Atest, bir testi temizleme veya sökme adımını atlamaya zorlayabilir. CTS gibi birçok test, test çalıştırıldıktan sonra cihazı temizler, bu nedenle testinizi -t ile yeniden çalıştırmaya çalışmak --disable-teardown parametresi olmadan başarısız olur. Test temizleme adımını atlamak ve yinelemeli 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, bir test sınıfı içinde belirli yöntemlerin çalıştırılmasını destekler. 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

Birden çok yöntem belirtirken bunları 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 örnek, tek bir yöntemi çalıştırmanın tercih edilen yollarını 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.

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

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange

Android 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 yaptığınız 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.

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 dosyalarını çalıştırın

Atest, GTest ikili dosyalarını çalıştırabilir. Bu testleri, bu örnekte armeabi-v7a (ARM 32-bit) ve arm64-v8a (ARM 64-bit) olan tüm mevcut cihaz mimarileri için çalıştırmak üzere -a kullanın.

Örnek giriş testi:

atest -a libinput_tests inputflinger_tests

Çalıştırılacak belirli bir GTest ikili dosyasını seçmek için, test adını belirtmek için iki nokta üst üste (:) ve ayrı bir yöntemi daha fazla belirtmek için bir hashtag (#) kullanın.

Örneğin, aşağıdaki test tanımı için:

TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)

Testin tamamını belirtmek için aşağıdakini çalıştırın:

atest inputflinger_tests:InputDispatcherTest

Veya aşağıdakileri kullanarak bireysel bir test çalıştırın:

atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents

Testleri TEST_MAPPING içinde çalıştırın

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

Ön gönderim testlerini örtük olarak çalıştırın

Geçerli ve üst dizinlerdeki TEST_MAPPING dosyalarında ön gönderim testleri çalıştırın:

atest

/path/to/project ve üst dizinlerindeki TEST_MAPPING dosyalarında ön gönderim testleri çalıştırın:

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

Belirtilen bir test grubunu çalıştırın

Kullanılabilir test grupları şunlardır: presubmit (varsayılan), postsubmit , mainline-presubmit ve all .

Geçerli ve üst dizinlerdeki TEST_MAPPING dosyalarında gönderim sonrası testleri çalıştırın:

<pre>
<code class="devsite-terminal">atest :postsubmit</code>
</pre>

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

<pre>
<code class="devsite-terminal">atest :all</code>
</pre>

/path/to/project ve üst dizinlerindeki TEST_MAPPING dosyalarında gönderim sonrası testleri çalıştırın:

<pre>
<code class="devsite-terminal">atest --test-mapping <var>/path/to/project</var>:postsubmit</code>
</pre>

/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
    

Testleri alt dizinlerde çalıştırın

Varsayılan olarak, Atest yalnızca yukarı doğru TEST_MAPPING dosyalarındaki testleri arar (geçerli veya verilen dizinden ana dizinlerine). Testleri alt dizinlerdeki TEST_MAPPING dosyalarında da çalıştırmak istiyorsanız, --include-subdirs Atest'i bu testleri de dahil etmeye zorlamak için kullanın:

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

Testleri yinelemede çalıştırın

--iterations bağımsız değişkenini ileterek testleri yinelemede çalıştırın. Başarılı veya başarısız olsun, Atest, maksimum yinelemeye ulaşılana kadar testi tekrarlayacaktır.

Örnekler:

Varsayılan olarak, Atest 10 kez yinelenir. Yineleme sayısı pozitif bir tam sayı olmalıdır.

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

Aşağıdaki yaklaşımlar, lapa lapa testlerini tespit etmeyi kolaylaştırır:

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.

  • test-to-run birden çok test senaryosu olduğunu ve testlerden birinin başarısız olduğunu varsayın. Başarısız testi yalnızca 10 kez (varsayılan olarak) 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ırın

Atest, yeni oluşturulan bir AVD üzerinde testler çalıştırabilir. Bir AVD oluşturmak ve acloud create çalıştırın, ardından testlerinizi çalıştırmak için aşağıdaki örnekleri kullanın.

Bir AVD başlatın ve üzerinde testler yapın:

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

Test çalıştırmasının bir parçası olarak bir AVD başlatın:

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

Daha fazla bilgi için acloud create --help çalıştırın.

Modüle geçiş seçenekleri

Atest, seçenekleri test modüllerine geçirebilmektedir. Test çalıştırmanıza TradeFed komut satırı seçeneklerini eklemek için aşağıdaki yapıyı kullanın ve özel argümanlarınızın Tradefed komut satırı seçenek biçimini takip ettiğinden emin olun.

atest test-to-run -- [CUSTOM_ARGS]

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çin:

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

Seçenekleri bir koşucu tipine veya sınıfına iletin:

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 seçenekleri hakkında daha fazla bilgi için bkz. Modüllere geçme seçenekleri .

,

Atest, kullanıcıların yerel olarak Android testleri oluşturmasına, yüklemesine ve çalıştırmasına olanak tanıyan ve Trade Federation test donanımı komut satırı seçenekleri hakkında bilgi gerektirmeden test yeniden çalıştırmalarını büyük ölçüde hızlandıran bir komut satırı aracıdır. Bu sayfa, Android testlerini çalıştırmak için Atest'in nasıl kullanılacağını açıklar.

Android için test yazma hakkında genel bilgi için Android Platform Testi bölümüne bakın.

Atest'in genel yapısı hakkında bilgi için Atest Geliştirici Kılavuzu'na bakın.

Atest aracılığıyla TEST_MAPPING dosyalarında testler çalıştırma hakkında bilgi için, bkz . TEST_MAPPING dosyalarında testleri çalıştırma .

Atest'e bir özellik eklemek için Atest Geliştirici İş Akışını takip edin.

Ortamınızı ayarlama

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

Ortam değişkenini ayarla

Soong için test_suite veya Make aşağıdaki Paketleme oluşturma komut dosyası kuralları için LOCAL_COMPATIBILITY_SUITE ayarlayın.

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

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

source build/envsetup.sh

lunch çalıştır

Desteklenen cihazların bir menüsünü getirmek için lunch komutunu çalıştırın. 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'i çalıştırmak için gereken çeşitli ortam değişkenlerini ayarlar ve Atest komutunu $PATH dosyanıza ekler.

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ğıdaki tablo en sık kullanılan bağımsız değişkenleri listeler. Tam bir listeye atest --help aracılığıyla ulaşılabilir.

Seçenek Uzun seçenek Tanım
-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.
<c> --info Belirtilen hedeflerle ilgili bilgileri gösterir ve ardından çıkar.
<c> --dry-run Testleri gerçekten oluşturmadan, kurmadan veya çalıştırmadan kuru çalışır.
-m --rebuild-module-info module-info.json dosyasının yeniden oluşturulmasını zorlar.
-w --wait-for-debugger Yürütmeden önce hata ayıklayıcının bitmesini bekler.
-v --verbose DEBUG seviyesi günlüğünü görüntüler.
<c> --iterations Döngü testleri, maksimum yinelemeye ulaşılana kadar çalıştırır. (varsayılan olarak 10)
<c> --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)
<c> --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)
<c> --start-avd Otomatik olarak bir AVD oluşturur ve sanal cihazda testler çalıştırır.
<c> --acloud-create acloud komutunu kullanarak bir AVD oluşturur.
<c> --[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.
<c> --host Testi bir cihaz olmadan tamamen ana bilgisayarda çalıştırır.
Not: --host içeren bir cihaz gerektiren bir ana bilgisayar testinin çalıştırılması başarısız olur.
<c> --flakes-info Pul bilgisiyle birlikte test sonucunu gösterir.
<c> --history Test sonuçlarını kronolojik sırayla gösterir.
<c> --latest-result En son test sonucunu yazdırır.

-b , -i ve -t hakkında daha fazla bilgi için Adımları belirtin: oluşturma, yükleme veya çalıştırma bölümüne bakın.

Testleri belirtin

Testleri çalıştırmak için aşağıdaki tanımlayıcılardan birini kullanarak bir veya daha fazla test belirtin:

  • Modül Adı
  • Modül: Sınıf
  • Sınıf adı
  • Tradefed entegrasyon testi
  • Dosya yolu
  • Paket ismi

Aşağıdaki gibi boşluklu çoklu testlere ayrı referanslar:

atest test-identifier-1 test-identifier-2

Modül Adı

Tüm bir test modülünü çalıştırmak için modül adını kullanın. Adı, bu testin Android.mk veya Android.bp dosyasındaki LOCAL_MODULE veya LOCAL_PACKAGE_NAME değişkenlerinde göründüğü gibi girin.

Ö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 kullanın. Modül , Modül adı bölümünde açıklananla aynıdır. Sınıf , .java dosyasındaki test sınıfının adıdır ve tam nitelikli sınıf adı veya temel ad olabilir.

Örnekler:

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

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

Tradefed entegrasyon testi

Doğrudan TradeFed'e (modül olmayan) entegre edilmiş testleri çalıştırmak için, tradefed.sh list configs komutunun çıktısında göründüğü gibi adı girin. Örneğin:

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

atest example/reboot

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

atest native-benchmark

Dosya yolu

Atest, uygun şekilde test dosyasına veya dizinine giden yolu girerek hem modül tabanlı testleri hem de entegrasyon tabanlı testleri çalıştırmayı destekler. Ayrıca, sınıfın Java dosyasının yolunu belirterek tek bir sınıfın çalıştırılmasını da destekler. Hem göreli hem de mutlak yollar desteklenir.

Modül çalıştır

Aşağıdaki örnekler, bir dosya yolu kullanarak CtsVideoTestCases modülünü çalıştırmanın iki yolunu gösterir.

Android repo-root çalıştırın:

atest cts/tests/video

Android repo-root/cts/tests/video çalıştırın:

    atest .

Bir test sınıfı çalıştırın

Aşağıdaki örnek, bir dosya yolu kullanarak CtsVideoTestCases modülü içinde belirli bir sınıfın nasıl çalıştırılacağını gösterir.

Android repo-root :

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

Bir entegrasyon testi çalıştırın

Aşağıdaki örnek, Android repo-root bir dosya yolu kullanarak bir entegrasyon testinin nasıl çalıştırılacağını gösterir:

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

Paket ismi

Atest, paket adına göre test aramayı destekler.

Örnekler:

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

Adımları belirtin: Derleyin, kurun veya çalıştırın

Hangi adımların çalıştırılacağını belirtmek için -b , -i ve -t seçeneklerini kullanın. Bir seçenek belirtmezseniz, tüm adımlar çalışır.

  • Yalnızca derleme hedefleri: atest -b test-to-run
  • Yalnızca testleri çalıştırın: atest -t test-to-run
  • Apk yükleyin ve testleri çalıştırın: atest -it test-to-run
  • Derleyin ve çalıştırın, ancak kurmayın: atest -bt test-to-run

Atest, bir testi temizleme veya sökme adımını atlamaya zorlayabilir. CTS gibi birçok test, test çalıştırıldıktan sonra cihazı temizler, bu nedenle testinizi -t ile yeniden çalıştırmaya çalışmak --disable-teardown parametresi olmadan başarısız olur. Test temizleme adımını atlamak ve yinelemeli 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, bir test sınıfı içinde belirli yöntemlerin çalıştırılmasını destekler. 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

Birden çok yöntem belirtirken bunları 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 örnek, tek bir yöntemi çalıştırmanın tercih edilen yollarını 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.

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

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange

Android 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 yaptığınız 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.

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 dosyalarını çalıştırın

Atest, GTest ikili dosyalarını çalıştırabilir. Bu testleri, bu örnekte armeabi-v7a (ARM 32-bit) ve arm64-v8a (ARM 64-bit) olan tüm mevcut cihaz mimarileri için çalıştırmak üzere -a kullanın.

Örnek giriş testi:

atest -a libinput_tests inputflinger_tests

Çalıştırılacak belirli bir GTest ikili dosyasını seçmek için, test adını belirtmek için iki nokta üst üste (:) ve ayrı bir yöntemi daha fazla belirtmek için bir hashtag (#) kullanın.

Örneğin, aşağıdaki test tanımı için:

TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)

Testin tamamını belirtmek için aşağıdakini çalıştırın:

atest inputflinger_tests:InputDispatcherTest

Veya aşağıdakileri kullanarak bireysel bir test çalıştırın:

atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents

Testleri TEST_MAPPING içinde çalıştırın

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

Ön gönderim testlerini örtük olarak çalıştırın

Geçerli ve üst dizinlerdeki TEST_MAPPING dosyalarında ön gönderim testleri çalıştırın:

atest

/path/to/project ve üst dizinlerindeki TEST_MAPPING dosyalarında ön gönderim testleri çalıştırın:

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

Belirtilen bir test grubunu çalıştırın

Kullanılabilir test grupları şunlardır: presubmit (varsayılan), postsubmit , mainline-presubmit ve all .

Geçerli ve üst dizinlerdeki TEST_MAPPING dosyalarında gönderim sonrası testleri çalıştırın:

<pre>
<code class="devsite-terminal">atest :postsubmit</code>
</pre>

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

<pre>
<code class="devsite-terminal">atest :all</code>
</pre>

/path/to/project ve üst dizinlerindeki TEST_MAPPING dosyalarında gönderim sonrası testleri çalıştırın:

<pre>
<code class="devsite-terminal">atest --test-mapping <var>/path/to/project</var>:postsubmit</code>
</pre>

/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
    

Testleri alt dizinlerde çalıştırın

Varsayılan olarak, Atest yalnızca yukarı doğru TEST_MAPPING dosyalarındaki testleri arar (geçerli veya verilen dizinden ana dizinlerine). Testleri alt dizinlerdeki TEST_MAPPING dosyalarında da çalıştırmak istiyorsanız, --include-subdirs Atest'i bu testleri de dahil etmeye zorlamak için kullanın:

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

Testleri yinelemede çalıştırın

--iterations bağımsız değişkenini ileterek testleri yinelemede çalıştırın. Başarılı veya başarısız olsun, Atest, maksimum yinelemeye ulaşılana kadar testi tekrarlayacaktır.

Örnekler:

Varsayılan olarak, Atest 10 kez yinelenir. Yineleme sayısı pozitif bir tam sayı olmalıdır.

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

Aşağıdaki yaklaşımlar, lapa lapa testlerini tespit etmeyi kolaylaştırır:

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.

  • test-to-run birden çok test senaryosu olduğunu ve testlerden birinin başarısız olduğunu varsayın. Başarısız testi yalnızca 10 kez (varsayılan olarak) 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ırın

Atest, yeni oluşturulan bir AVD üzerinde testler çalıştırabilir. Bir AVD oluşturmak ve acloud create çalıştırın, ardından testlerinizi çalıştırmak için aşağıdaki örnekleri kullanın.

Bir AVD başlatın ve üzerinde testler yapın:

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

Test çalıştırmasının bir parçası olarak bir AVD başlatın:

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

Daha fazla bilgi için acloud create --help çalıştırın.

Modüle geçiş seçenekleri

Atest, seçenekleri test modüllerine geçirebilmektedir. Test çalıştırmanıza TradeFed komut satırı seçeneklerini eklemek için aşağıdaki yapıyı kullanın ve özel argümanlarınızın Tradefed komut satırı seçenek biçimini takip ettiğinden emin olun.

atest test-to-run -- [CUSTOM_ARGS]

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çin:

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

Seçenekleri bir koşucu tipine veya sınıfına iletin:

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 seçenekleri hakkında daha fazla bilgi için bkz. Modüllere geçme seçenekleri .