Atest, kullanıcıların Android testlerini yerel olarak oluşturmasına, kurmasına ve çalıştırmasına izin vererek, 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 sayfada Atest'in Android testlerini çalıştırmak için nasıl kullanılacağı açıklanmaktadır.
Android için test yazma hakkında 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.
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 bir özellik eklemek için Atest Developer Workflow'u takip edin.
ortamınızı kurun
Atest ortamınızı kurmak için Ortamı kurma , Hedef seçme ve Kodu oluşturma bölümlerindeki 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 tablo en sık kullanılan bağımsız değişkenleri listeler. Tam bir liste atest --help
aracılığıyla edinilebilir.
Seçenek | Uzun seçenek | Açıklama |
---|---|---|
-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 ayırma ve temizlemeyi devre dışı bırakır. |
| --info | Belirtilen hedeflerle ilgili bilgileri gösterir ve çıkar. |
| --dry-run | Gerçekte test oluşturmadan, kurmadan veya çalıştırmadan Atest'i prova eder. |
-m | --rebuild-module-info | module-info.json dosyasını yeniden oluşturmaya zorlar. |
-w | --wait-for-debugger | Çalıştırmadan önce hata ayıklayıcının bitmesini bekler. |
-v | --verbose | DEBUG düzeyinde günlüğe kaydetmeyi görüntüler. |
| --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 yinelemeye ulaşılana kadar tüm testleri yeniden çalıştırır. (varsayılan olarak 10) |
| --retry-any-failure [COUNT=10] | Geçilene veya maksimum yinelemeye ulaşılana kadar başarısız testleri yeniden çalıştırır. (varsayılan olarak 10) |
| --start-avd | Otomatik olarak bir AVD oluşturur ve sanal cihaz üzerinde testler gerçekleştirir. |
| --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 tamamen ana bilgisayarda cihaz olmadan çalıştırır. Not: --host olan bir cihaz gerektiren bir host testi çalıştırmak 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ı belirtin: 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 çok teste yapılan referansları boşluklarla ayırın, örneğin:
atest test-identifier-1 test-identifier-2
Modül Adı
Test modülünün tamamını çalıştırmak için modül adını kullanın. Söz konusu testin Android.mk
veya Android.bp
dosyasındaki LOCAL_MODULE
veya LOCAL_PACKAGE_NAME
değişkenlerinde görünen adı 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. Class , .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 entegre edilmiş (modül olmayan) testleri çalıştırmak için, adı tradefed.sh list configs
komutunun çıktısında göründüğü gibi 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ı çalıştırmayı da destekler. Hem göreli hem de mutlak yollar desteklenir.
Bir modül çalıştırın
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, testlerin paket adına göre aranmasını 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 hedef oluşturun:
atest -b test-to-run
- Yalnızca testleri çalıştır:
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 -t
ile testinizi 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ı gerekse de bu, testleri çalıştırmak için gereken süreyi azaltır. Belirli yöntemleri çalıştırmak için, sınıfı tanımlamak için desteklenen yollardan herhangi birini kullanarak sınıfı tanımlayın (Modül:Sınıf, dosya yolu vb.) 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, testFlagChange
adlı tek bir yöntemi çalıştırmanın tercih edilen yollarını göstermektedir. 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ü Kullanma: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, 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, bu nedenle bir modülde sınıfların bir alt kümesini belirtmek, tüm modülü çalıştırma performansını artırır.
Aynı modülde iki sınıfı ç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 ü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 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ğıdakini kullanarak bireysel bir test çalıştırın:
atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents
Testleri TEST_MAPPING
içinde çalıştır
Atest, testleri TEST_MAPPING
dosyalarında çalıştırabilir.
Ön gönderim testlerini dolaylı olarak çalıştırın
Geçerli ve üst dizinlerdeki TEST_MAPPING
dosyalarında ön gönderme testleri çalıştırın:
atest
/path/to/project içindeki TEST_MAPPING
dosyalarında ve üst dizinlerinde gönderme öncesi testleri çalıştırın:
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
.
Geçerli ve üst dizinlerdeki TEST_MAPPING dosyalarında gönderme 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önderme sonrası testleri çalıştırın:
atest --test-mapping /path/to/project:postsubmit
Ana hat testlerini /path/to/project içindeki TEST_MAPPING dosyalarında ve üst dizinlerinde çalıştırın:
atest --test-mapping /path/to/project:mainline-presubmit
Alt dizinlerdeki testleri çalıştırın
Varsayılan olarak, Atest yalnızca TEST_MAPPING dosyalarındaki testleri 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
Yinelemede testleri çalıştırın
--iterations
bağımsız değişkenini ileterek testleri yinelemede çalıştırın. Geçse de geçmese de Atest, maksimum iterasyona ulaşılana kadar testi tekrarlayacaktır.
Örnekler:
Atest varsayılan olarak 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 testlerin tespit edilmesini 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 başarısızlık meydana geldiğinde veya yineleme 10. tura (varsayılan olarak) ulaştığında durdurun.
atest test-to-run --rerun-until-failure
- Bir başarısızlık meydana geldiğinde veya yineleme 100. tura ulaştığında durdurun.
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 fazla test durumu olduğunu ve testlerden birinin başarısız olduğunu varsayalım. Yalnızca başarısız olan testi 10 kez (varsayılan olarak) veya test geçene kadar çalıştırın.atest test-to-run --retry-any-failure
- Geçtiğinde veya 100. turu geçtiğinde başarısız olan 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 yapabilir. Bir AVD oluşturmak ve yapıtlar 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 iletebilir. 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çenek biçimini izlediğ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ı hedeflemek için 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
Salt test seçenekleri hakkında daha fazla bilgi için bkz. Seçenekleri modüllere geçirme .