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ı 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.