Atest, kullanıcıların Android testlerini yerel olarak oluşturmasına, yüklemesine ve çalıştırmasına olanak tanıyan bir komut satırı aracıdır ve Ticaret Federasyonu test donanımı komut satırı seçenekleri hakkında bilgi gerektirmeden testin yeniden çalıştırılmasını büyük ölçüde hızlandırır. Bu sayfada Android testlerini çalıştırmak için Atest'in nasıl kullanılacağı açıklanmaktadır.
Android için testler yazmaya ilişkin genel bilgi için bkz. Android Platform Testi .
Atest'in genel yapısı hakkında bilgi için Atest Geliştirici Kılavuzu'na bakın.
TEST_MAPPING dosyalarında testleri Atest aracılığıyla ç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ı izleyin.
Ortamınızı ayarlayın
Atest ortamınızı kurmak için Ortamı ayarlama , Hedef seçme ve Kodu oluşturma bölümündeki talimatları izleyin.
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 tabloda en sık kullanılan argümanlar listelenmektedir. Tam 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ıtları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. Aynı anda bir cihaz test edilebilir. |
-d | --disable-teardown | Test sökme ve temizlemeyi devre dışı bırakır. |
| --info | Belirtilen hedeflerle ilgili bilgileri gösterir ve ardından çıkar. |
| --dry-run | Gerçekte testler oluşturmadan, kurmadan veya çalıştırmadan Atest'i kuru çalıştırır. |
-m | --rebuild-module-info | module-info.json dosyasının yeniden oluşturulmasını zorlar. |
-w | --wait-for-debugger | Çalıştırmadan önce hata ayıklayıcının bitmesini bekler. |
-v | --verbose | DEBUG seviyesi günlüğünü görüntüler. |
| --iterations | Döngü, maksimum yinelemeye ulaşılıncaya kadar testleri ç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 | acloud komutunu kullanarak bir AVD 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 bir cihaz olmadan tamamen ana bilgisayarda çalıştırır. Not: --host ile bir cihaz gerektiren bir ana bilgisayar testinin çalıştırılması başarısız olur. |
| --history | Test sonuçlarını kronolojik sırayla gösterir. |
| --latest-result | En son test sonucunu yazdırır. |
-b
, -i
ve -t
hakkında daha fazla bilgi için Adımları belirtme: derleme, 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
Birden fazla teste yapılan referansları aşağıdaki gibi boşluklarla ayırın:
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ı, söz konusu testin Android.mk
veya Android.bp
dosyasındaki LOCAL_MODULE
veya LOCAL_PACKAGE_NAME
değişkenlerinde göründüğü şekilde 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 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 entegre edilmiş testleri (modül olmayanlar) çalıştırmak için, adı tradefed.sh list configs
komutunun çıktısında göründüğü şekilde 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, test dosyası veya dizininin yolunu uygun şekilde 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öreceli hem de mutlak yollar desteklenir.
Bir modül çalıştırın
Aşağıdaki örneklerde CtsVideoTestCases
modülünü bir dosya yolu kullanarak çalıştırmanın iki yolu gösterilmektedir.
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, CtsVideoTestCases
modülü içinde belirli bir sınıfın bir dosya yolu kullanılarak nasıl çalıştırılacağını gösterir.
Android repo-root
:
atest cts/tests/video/src/android/video/cts/VideoEncoderDecoderTest.java
Entegrasyon testi çalıştırın
Aşağıdaki örnek, Android repo-root
bir dosya yolunu 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, testlerin paket adına göre aranmasını destekler.
Örnekler:
atest com.android.server.wm
atest com.android.uibench.janktests
Adımları belirtin: Oluşturun, yükleyin 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ıştırılır.
- Yalnızca hedef oluşturma:
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, testi temizleme veya sökme adımını atlamaya zorlayabilir. CTS gibi birçok test, test çalıştırıldıktan sonra cihazı temizler; dolayısıyla testinizi -t
ile yeniden çalıştırmayı denemek --disable-teardown
parametresi olmadan başarısız olur. Test temizleme adımını atlamak ve tekrarlayarak test etmek için -t
önce -d
kullanın.
atest -d test-to-run
atest -t test-to-run
Belirli yöntemleri çalıştırın
Atest, bir test sınıfı içinde belirli yöntemlerin çalıştırılmasını destekler. Tüm modülün oluşturulması gerekse de 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 fazla 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 ( testFlagChange
çalıştırmanın tercih edilen yollarını gösterir. Bu örnekler yalnızca sınıf adının kullanılmasına tercih edilir çünkü modülün veya Java dosyasının konumunun belirtilmesi Atest'in testi çok daha hızlı bulmasını sağlar.
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 fazla yöntem çalıştırılabilir:
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors
Birden fazla sınıfı çalıştırın
Birden çok sınıfı çalıştırmak için, birden çok test çalıştırırken olduğu gibi bunları boşluklarla ayırın. Atest, sınıfları verimli bir şekilde oluşturur ve çalıştırır; dolayısıyla, bir modülde sınıfların bir alt kümesini belirlemek, tüm modülü çalıştırma performansını artırır.
İki sınıfı aynı modülde çalıştırmak için:
atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests
İki sınıfı farklı modüllerde ç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 için -a
kullanın.
Örnek giriş testi:
atest -a libinput_tests inputflinger_tests
Çalıştırılacak belirli bir GTest ikili programını seçmek için, test adını belirtmek üzere iki nokta üst üste (:) ve ayrı bir yöntemi 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ğıdakileri çalıştırın:
atest inputflinger_tests:InputDispatcherTest
Veya aşağıdakileri kullanarak ayrı bir test çalıştırın:
atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents
TEST_MAPPING'de testleri çalıştırın
Atest, TEST_MAPPING
dosyalarında testler çalıştırabilir.
Gönderim öncesi testleri örtülü olarak çalıştırın
Geçerli ve üst dizinlerdeki TEST_MAPPING
dosyalarında ön gönderim testlerini çalıştırın:
atest
/path/to/project ve üst dizinlerindeki TEST_MAPPING
dosyalarında ön gönderim testlerini ç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:
atest :postsubmit
TEST_MAPPING dosyalarındaki tüm gruplardan testler çalıştırın:
atest :all
/path/to/project ve üst dizinlerindeki TEST_MAPPING dosyalarında gönderim sonrası testleri çalıştırın:
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 testler çalıştırın
Varsayılan olarak, Atest yalnızca TEST_MAPPING dosyalarındaki testleri yukarıya doğru arar (geçerli veya verilen dizinden üst dizinlerine). Alt dizinlerdeki TEST_MAPPING dosyalarında da testler ç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 yinelemede çalıştırma
--iterations
bağımsız değişkenini ileterek testleri yinelemede çalıştırın. Başarılı olsa da başarısız olsa da 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 hatalı testlerin tespitini 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. (varsayılan olarak) tura ulaştığında durun.
atest test-to-run --rerun-until-failure
- Bir başarısızlık meydana geldiğinde 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 olan testleri çalıştırın.
-
test-to-run
birden fazla test senaryosu içerdiğini ve testlerden birinin başarısız olduğunu varsayalım. Başarısız olan testi yalnızca 10 kez (varsayılan olarak) veya test başarılı olana kadar çalıştırın.atest test-to-run --retry-any-failure
- Başarısız olan testi geçtiğinde veya 100. tura ulaştığında çalışmayı 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 yürütebilmektedir. Bir AVD oluşturmak ve yapılar 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 AVD başlatın ve üzerinde testler yapın:
acloud create --local-instance --local-image && atest test-to-run
Bir test çalışmasının 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.
Seçenekleri modüle geçirme
Atest, seçenekleri test modüllerine aktarabilmektedir. Test çalıştırmanıza TradeFed komut satırı seçeneklerini eklemek için aşağıdaki yapıyı kullanın ve özel bağımsız değişkenlerinizin Tradefed komut satırı seçeneği formatına uyduğundan emin olun.
atest test-to-run -- [CUSTOM_ARGS]
Test yapılandırma dosyasında tanımlanan hedef hazırlayıcılara veya test çalıştırıcılarına test modülü seçeneklerini iletin:
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 türüne 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. Seçenekleri modüllere geçirme .