Her yeni test modülünde, modül meta verileri, derleme zamanı bağımlılıkları ve paketleme talimatlarıyla derleme sistemini yönlendirecek bir yapılandırma dosyası bulunmalıdır. Android, daha basit test yapılandırması için artık Soong derleme sistemini kullanıyor.
Soong, derlenecek modüllerin JSON benzeri basit açıklayıcı açıklamaları olan Blueprint veya .bp
dosyalarını kullanır. Bu biçim, önceki sürümlerde kullanılan Make tabanlı sistemin yerini alır. Ayrıntılı bilgi için Sürekli Entegrasyon Kontrol Paneli'ndeki Soong referans dosyalarına bakın.
Özel testlere uyum sağlamak veya Android Uyumluluk Test Paketi'ni (CTS) kullanmak için Karmaşık Test Yapılandırması'nı uygulayın.
Örnek
Aşağıdaki girişler şu örnek Blueprint yapılandırma dosyasından alınmıştır: /platform_testing/tests/example/instrumentation/Android.bp
Kolaylık sağlamak için 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şındaki android_test
beyanının bunun bir test olduğunu gösterdiğini unutmayın.
android_app
eklemek ise bunun bir derleme paketi olduğunu gösterir.
Ayarlar
Aşağıdaki ayarlar açıklanmaktadır:
name: "HelloWorldTests",
android_test
modülü türü belirtildiğinde (bloğun başında) name
ayarı gereklidir. Bu, modülünüze bir ad verir ve oluşturulan APK aynı ada sahip olur ve .apk
son eki alır. Örneğin, bu durumda oluşturulan test APK'sı HelloWorldTests.apk
olarak adlandırılır. Ayrıca bu işlem, modülünüz için bir make hedefi adı da tanımlar. Böylece test modülünüzü ve tüm bağımlılıkları oluşturmak için make [options]
<HelloWorldTests>
'ü kullanabilirsiniz.
static_libs: ["androidx.test.runner"],
static_libs
ayarı, derleme sistemine adlandırılmış modüllerin içeriklerini mevcut modülün oluşturulan APK'sına dahil etmesini söyler. Bu, adlandırılmış her modülün bir .jar
dosyası oluşturması gerektiği ve içeriğinin derleme sırasında sınıf yolu referanslarını çözmek için kullanılacağı ve elde edilen apk'ya dahil edileceği anlamına gelir.
androidx.test.runner
modülü, test çalıştırıcı AndroidJUnitRunner
'ü içeren AndroidX Test Runner Library için önceden derlenmiş bir modüldür.
AndroidJUnitRunner
, JUnit4 test çerçevesini destekler ve Android 10'da InstrumentationTestRunner
'in yerini almıştır. Android uygulamalarını test etme hakkında daha fazla bilgiyi Android'de uygulamaları test etme başlıklı makalede bulabilirsiniz.
Yeni bir enstrümantasyon modülü oluşturuyorsanız test çalıştırıcınız olarak her zaman androidx.test.runner
kitaplığıyla başlamanız gerekir. Platform kaynak ağacı, ub-uiautomator
, mockito-target
, easymock
gibi diğer yararlı test çerçevelerini de içerir.
certificate: "platform",
certificate
ayarı, derleme sistemine APK'yı temel platformla aynı sertifikayla imzalamasını söyler. Testiniz imza korumalı bir izin veya API kullanıyorsa bu gereklidir. Bunun platformun sürekli testi için uygun olduğunu ancak CTS test modüllerinde kullanılmaması gerektiğini unutmayın. Bu örnekte bu sertifika ayarının yalnızca açıklama amacıyla kullanıldığını unutmayın: Örnekteki test kodunun, test APK'sının özel platform sertifikasıyla imzalanması gerekmez.
Bileşeniniz için sistem sunucusunun dışında bulunan bir enstrümantasyon yazıyorsanız (yani sistem görüntüsüne yerleştirilmiş ve ayrıcalıklı bir uygulama olması dışında normal bir uygulama APK'sı gibi paketlenmişse) enstrümantasyonunuz, bileşeninizin uygulama paketini (manifest ile ilgili bölüme bakın) hedefliyor olabilir. Bu durumda, uygulama uygulamanızın kendi certificate
ayarı olabilir ve araç modülünüz aynı ayarı koruyacaktır. Bunun nedeni, test edilen uygulamada araçlarınızı hedeflemek için test apk'nizin ve uygulama APK'nızın aynı sertifikayla imzalanmasıdır.
Diğer durumlarda bu ayarı hiç uygulamanıza gerek yoktur: Derleme sistemi, derleme varyantına bağlı olarak varsayılan bir yerleşik sertifikayla imzalar. Bu sertifika genellikle dev-keys
olarak adlandırılır.
test_suites: ["device-tests"],
test_suites
ayarı, testi Trade Federation test aparatı tarafından kolayca bulunabilir hale getirir. Bu testin paylaşılabilmesi için CTS gibi diğer paketleri buraya ekleyebilirsiniz.
${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk
İsteğe bağlı ayarlar
Aşağıdaki isteğe bağlı ayarlar açıklanmaktadır:
test_config: "path/to/hello_world_test.xml"
test_config
ayarı, derleme sistemine test hedefinizin belirli bir yapılandırmaya ihtiyacı olduğunu bildirir. Varsayılan olarak, Android.bp
sembolünün yanında bir AndroidTest.xml
simgesi bulunur.
auto_gen_config: true
auto_gen_config
ayarı, test yapılandırmasının otomatik olarak oluşturulup oluşturulmayacağını belirtir. Android.bp
öğesinin yanında AndroidTest.xml
yoksa bu özelliğin açıkça true olarak ayarlanması gerekmez.
require_root: true
require_root
ayarı, derleme sistemine RootTargetPreparer'ı otomatik olarak oluşturulan test yapılandırmasına eklemesini söyler. Bu, testin kök 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 eklemesini söyler. Trade Federation, test yapılandırmasını çalıştırdığında ro.product.first_api_level
cihaz özelliği test_min_api_level
'ten küçükse test atlanır.