Her yeni test modülü, derleme sistemini modül meta verileri, derleme zamanı bağımlılıkları ve paketleme talimatlarıyla yönlendirecek bir yapılandırma dosyasına sahip olmalıdır. Android artık daha basit test yapılandırması için Soong derleme sistemini kullanıyor.
Soong, oluşturulacak modüllerin JSON benzeri basit bildirimsel açıklamaları olan Blueprint veya .bp
dosyalarını kullanır. Bu format, önceki sürümlerde kullanılan Make tabanlı sistemin yerini alır. Tüm ayrıntılar için Sürekli Entegrasyon Kontrol Panelindeki Soong referans dosyalarına bakın.
Özel testlere uyum sağlamak veya Android Uyumluluk Test Paketini (CTS) kullanmak için bunun yerine Karmaşık Test Yapılandırmasını izleyin.
Örnek
Aşağıdaki girişler bu örnek Blueprint yapılandırma dosyasından alınmıştır: /platform_testing/tests/example/instrumentation/Android.bp
Kolaylık sağlamak için buraya bir anlık görüntü eklenmiştir:
android_test {
name: "HelloWorldTests",
srcs: ["src/**/*.java"],
sdk_version: "current",
static_libs: ["androidx.test.runner"],
certificate: "platform",
test_suites: ["device-tests"],
}
Başlangıçtaki android_test
bildiriminin bunun bir test olduğunu gösterdiğini unutmayın. android_app
dahil edilmesi, bunun tersine, bunun bir derleme paketi olduğunu gösterir.
Ayarlar
Aşağıdaki ayarlar açıklama getirir:
name: "HelloWorldTests",
android_test
modül tipi belirtildiğinde (bloğun başlangıcında) name
ayarı gereklidir. Modülünüze bir isim verir ve ortaya çıkan APK aynı şekilde ve .apk
son ekiyle adlandırılacaktır; örneğin bu durumda, ortaya çıkan test apk'si HelloWorldTests.apk
olarak adlandırılır. Ek olarak, bu aynı zamanda modülünüz için bir make target adı da tanımlar; böylece test modülünüzü ve tüm bağımlılıklarını oluşturmak için make [options] <HelloWorldTests>
kullanabilirsiniz.
static_libs: ["androidx.test.runner"],
static_libs
ayarı, derleme sistemine, adlandırılmış modüllerin içeriğini geçerli modülün sonuçtaki apk'sine dahil etmesi talimatını verir. Bu, adlandırılmış her modülün bir .jar
dosyası oluşturmasının beklendiği ve içeriğinin, derleme süresi boyunca sınıf yolu referanslarını çözümlemek için kullanılacağı ve sonuçta ortaya çıkan apk'ye dahil edileceği anlamına gelir.
androidx.test.runner
modülü, AndroidJUnitRunner
test çalıştırıcısını içeren AndroidX Test Çalıştırıcısı Kitaplığı için önceden oluşturulmuş bir modüldür. AndroidJUnitRunner
JUnit4 test çerçevesini destekler ve Android 10'da InstrumentationTestRunner
yerini almıştır. Android uygulamalarını test etme hakkında daha fazla bilgiyi Android'de test uygulamaları bölümünde bulabilirsiniz.
Yeni bir enstrümantasyon modülü oluşturuyorsanız, test çalıştırıcınız olarak her zaman androidx.test.runner
kütüphanesiyle başlamalısınız. Platform kaynak ağacı aynı zamanda ub-uiautomator
, mockito-target
, easymock
ve daha fazlası gibi diğer faydalı test çerçevelerini de içerir.
certificate: "platform",
certificate
ayarı, derleme sistemine apk'yi çekirdek platformla aynı sertifikayla imzalaması talimatını verir. Testiniz imza korumalı bir izin veya API kullanıyorsa bu gereklidir. Bunun platform sürekli testi için uygun olduğunu ancak CTS test modüllerinde kullanılmaması gerektiğini unutmayın. Bu örneğin bu sertifika ayarını yalnızca örnekleme amacıyla kullandığını unutmayın: örneğin test kodunun aslında test apk'sinin özel platform sertifikasıyla imzalanması gerekmez.
Bileşeniniz için sistem sunucusunun dışında yaşayan bir enstrümantasyon yazıyorsanız, yani sistem görüntüsünde yerleşik olması ve ayrıcalıklı bir uygulama olması dışında aşağı yukarı normal bir uygulama apk'si gibi paketlenmişse, muhtemelen enstrümantasyonunuzun bileşeninizin uygulama paketini (bildirimle ilgili aşağıdaki bölüme bakın) hedefleyin. Bu durumda, uygulama makefile'ınızın kendi certificate
ayarı olabilir ve enstrümantasyon modülünüz aynı ayarı korumalıdır. Bunun nedeni, test edilen uygulamaya yönelik enstrümantasyonunuzu hedeflemek için test apk'nızın ve uygulama apk'nizin aynı sertifikayla imzalanması gerekmesidir.
Diğer durumlarda, bu ayara hiç sahip olmanıza gerek yoktur: derleme sistemi bunu, derleme değişkenine bağlı olarak varsayılan bir yerleşik sertifikayla imzalar ve buna genellikle dev-keys
adı verilir.
test_suites: ["device-tests"],
test_suites
ayarı, testin Ticaret Federasyonu test donanımı tarafından kolayca keşfedilmesini sağlar. Bu testin paylaşılabilmesi için buraya CTS gibi başka süitler eklenebilir.
${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk
İsteğe bağlı ayarlar
Aşağıdaki isteğe bağlı ayarlar açıklama toplar:
test_config: "path/to/hello_world_test.xml"
test_config
ayarı, derleme sistemine test hedefinizin belirli bir yapılandırmaya ihtiyaç duyduğu talimatını verir. Varsayılan olarak Android.bp
yanındaki AndroidTest.xml
yapılandırmayla ilişkilendirilir.
auto_gen_config: true
auto_gen_config
ayarı, test yapılandırmasının otomatik olarak oluşturulup oluşturulmayacağını belirtir. AndroidTest.xml
Android.bp
yanında yoksa, bu özelliğin açıkça true olarak ayarlanmasına gerek yoktur.
require_root: true
require_root
ayarı, derleme sistemine otomatik olarak oluşturulan test yapılandırmasına RootTargetPreparer eklemesi talimatını verir. Bu, testin root izinleriyle çalışmasını garanti eder.
test_min_api_level: 29
test_min_api_level
ayarı, derleme sistemine MinApiLevelModuleController'ı otomatik olarak oluşturulan test yapılandırmasına eklemesi talimatını verir. Ticaret Federasyonu test yapılandırmasını çalıştırdığında, ro.product.first_api_level
cihaz özelliği < test_min_api_level
ise test atlanacaktır.