Basit derleme yapılandırması

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.