Her yeni test modülünde, derleme sistemini modül meta verileri, derleme zamanı bağımlılıkları ve paketleme talimatlarıyla yönlendiren bir yapılandırma dosyası olmalıdır. Android, artık daha basit test yapılandırması için Soong derleme sistemini kullanıyor.
Soong, Blueprint veya .bp
dosyalarını kullanır. Bu dosyalar, oluşturulacak modüllerin JSON benzeri basit bildirimsel açıklamalarıdı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 testleri desteklemek 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 buraya bir ekran görüntüsü 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
ifadesinin bunun bir test olduğunu gösterdiğini unutmayın.
android_app
karakterinin eklenmesi ise bunun bir derleme paketi olduğunu gösterir.
Ayarlar
Aşağıdaki ayarlar açıklanmıştır:
name: "HelloWorldTests",
android_test
modül türü belirtildiğinde name
ayarı zorunludur (bloğun başında). Modülünüze bir ad verir ve sonuçta elde edilen APK da aynı adla ve .apk
sonekiyle adlandırılır. Örneğin, bu durumda sonuçta elde edilen test APK'sı HelloWorldTests.apk
olarak adlandırılır. Ayrıca bu, modülünüz için bir make hedef 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çeriklerini mevcut modülün sonuç APK'sına dahil etmesini bildirir. Bu, adlandırılmış her modülün bir .jar
dosyası oluşturmasının beklendiği ve içeriğinin derleme zamanında sınıf yolu referanslarını çözümlemek için kullanılacağı, ayrıca sonuçtaki APK'ya dahil edileceği anlamına gelir.
androidx.test.runner
modülü, test çalıştırıcı AndroidJUnitRunner
'yı içeren AndroidX Test Runner kitaplığı için önceden oluşturulmuş bir modüldür.
AndroidJUnitRunner
, JUnit4 test çerçevesini destekler ve Android 10'da InstrumentationTestRunner
'ın 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 her zaman test çalıştırıcınız olarak androidx.test.runner
kitaplığıyla başlamalısınız. Platform kaynak ağacı, ub-uiautomator
, mockito-target
, easymock
gibi diğer faydalı test çerçevelerini de içerir.
certificate: "platform",
certificate
ayarı, derleme sistemine APK'yı temel platformla aynı sertifikayla imzalaması talimatını verir. Testinizde imzayla korunan bir izin veya API kullanılıyorsa bu gereklidir. Bu yöntemin platformun sürekli test edilmesi için uygun olduğunu ancak CTS test modüllerinde kullanılmaması gerektiğini unutmayın. Bu örnekte, sertifika ayarının yalnızca açıklama amacıyla kullanıldığını unutmayın: Örnekteki test kodu, test APK'sının özel platform sertifikasıyla imzalanması için aslında gerekli değildir.
Sistem sunucusunun dışında bulunan bileşeniniz için bir enstrümantasyon yazıyorsanız (yani sistem görüntüsüne yerleştirilmiş ve ayrıcalıklı bir uygulama olabilmesi dışında, normal bir uygulama APK'sı gibi paketlenmişse) enstrümantasyonunuzun bileşeninizin uygulama paketini hedeflemesi olasıdır (manifest ile ilgili aşağıdaki bölüme bakın). 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 uygulamadaki enstrümanınızı hedeflemek için test APK'nızın ve uygulama APK'nızın aynı sertifikayla imzalanması gerektiğidir.
Diğer durumlarda ise bu ayara hiç ihtiyacınız yoktur: Derleme sistemi, derleme varyantına göre varsayılan yerleşik bir sertifikayla imzalar ve bu sertifika genellikle dev-keys
olarak adlandırılır.
test_suites: ["device-tests"],
test_suites
ayarı, testin Trade Federation test düzeneği tarafından kolayca bulunmasını sağlar. Bu testin paylaşılabilmesi için buraya CTS gibi başka test paketleri eklenebilir.
${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk
İsteğe bağlı ayarlar
Aşağıdaki isteğe bağlı ayarlar açıklanmıştı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
öğesinin 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ı gösterir. AndroidTest.xml
, Android.bp
öğesinin yanında yoksa bu özelliğin açıkça doğru olarak ayarlanması gerekmez.
require_root: true
require_root
ayarı, derleme sistemine otomatik olarak oluşturulan test yapılandırmasına RootTargetPreparer eklemesini bildirir. Bu, testin kök izinleriyle çalışmasını garanti eder.
test_min_api_level: 29
test_min_api_level
ayarı, derleme sistemine otomatik olarak oluşturulan test yapılandırmasına MinApiLevelModuleController'ı eklemesini bildirir. Trade Federation, test yapılandırmasını çalıştırdığında ro.product.first_api_level
cihaz özelliği test_min_api_level
ise test atlanır.