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 .