Basit derleme yapılandırması

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ı bulunmalı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 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 Compatibility Test Suite'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çıklanmaktadı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çtaki 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'nin 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 platformda sürekli test 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 kodunun, test APK'sının özel platform sertifikasıyla imzalanması için aslında gerekli değildir.

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 olabilmesi dışında, az çok normal bir uygulama APK'sı gibi paketlenmişse) enstrümantasyonunuzun bileşeninizin uygulama paketini (manifest ile ilgili aşağıdaki bölüme bakın) hedeflemesi olasıdır. 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 bu ayara hiç ihtiyacınız yoktur: Derleme sistemi, derleme varyantına göre varsayılan bir yerleşik sertifikayla imzalar ve bu sertifika genellikle dev-keys olarak adlandırılır.

    test_suites: ["device-tests"],

test_suites ayarı, testin Ticaret Federasyonu test bandı 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, AndroidTest.xml simgesi Android.bp simgesinin yanında 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 eklemesi talimatını verir. 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.