Basit Yapı Yapılandırması

Her yeni test modülünün, yapı sistemini modül meta verileri, derleme zamanı bağımlılıkları ve paketleme talimatlarıyla yönlendirmek için 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, 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. Tüm ayrıntılar için Sürekli Entegrasyon Panosundaki Soong referans dosyalarına bakın.

Özel testlere uyum sağlamak veya Android Uyumluluk Test Paketi'ni (CTS) kullanmak için bunun yerine Karmaşık Test Yapılandırması'nı izleyin.

Örnek

Aşağıdaki girişler bu ö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 anlık görüntü eklenmiştir:

android_test {
    name: "HelloWorldTests",
    srcs: ["src/**/*.java"],
    sdk_version: "current",
    static_libs: ["android-support-test"],
    certificate: "platform",
    test_suites: ["device-tests"],
}

android_test bildiriminin bunun bir test olduğunu gösterdiğine dikkat edin. android_app dahil etmek, bunun tersine bunun bir derleme paketi olduğunu gösterir.

Ayarlar

Aşağıdaki ayarlar açıklama toplar:

    name: "HelloWorldTests",

name ayarı, android_test modül tipi belirtildiğinde (blok başlangıcında) gereklidir. Modülünüze bir isim verir ve ortaya çıkan APK aynı şekilde ve bir .apk sonekiyle isimlendirilir, örneğin bu durumda ortaya çıkan test apk 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> 'i kullanabilirsiniz.

    static_libs: ["android-support-test"],

static_libs ayarı, derleme sistemine, adlandırılmış modüllerin içeriklerini mevcut modülün elde edilen apk'sine dahil etmesi talimatını verir. Bu, adlandırılmış her modülün bir .jar dosyası üretmesinin beklendiği ve içeriğinin derleme süresi sırasında sınıf yolu referanslarını çözmek için kullanılacağı ve sonuçta elde edilen apk'ye dahil edileceği anlamına gelir.

Bu örnekte, testler için genel olarak yararlı olabilecek şeyler:

android-support-test , yeni test çalıştırıcısı AndroidJUnitRunner içeren Android Test Destek Kitaplığı için önceden oluşturulmuş bir testtir: JUnit4 test çerçevesi desteğiyle artık kullanımdan kaldırılan yerleşik InstrumentationTestRunner yerine geçer. Android'deki Test uygulamalarında daha fazlasını okuyun.

Yeni bir enstrümantasyon modülü oluşturuyorsanız, test çalıştırıcınız olarak her zaman android-support-test kitaplığı ile başlamalısınız. Platform kaynak ağacı ayrıca ub-uiautomator , mockito-target , easymock ve daha fazlası gibi diğer faydalı test çerçevelerini de içerir.

    certificate: "platform",

certificate ayarı, derleme sistemine apk'yi çekirdek platformla aynı sertifikayla imzalaması talimatını verir. Testiniz imza korumalı bir izin veya API kullanıyorsa bu gereklidir. Bunun platform sürekli testi için uygun olduğunu, ancak CTS test modüllerinde kullanılmaması gerektiğini unutmayın . Bu örneğin bu sertifika ayarını yalnızca açıklama amacıyla kullandığını unutmayın: örneğin test kodunun aslında test apk'sinin özel platform sertifikasıyla imzalanmasına gerek yoktur.

Bileşeniniz için sistem sunucusunun dışında yaşayan bir enstrümantasyon yazıyorsanız, yani sistem görüntüsünde yerleşik olması ve ayrıcalıklı bir uygulama olması dışında aşağı yukarı normal bir uygulama apk gibi paketlenmişse, enstrümantasyonunuzun büyük olasılıkla bileşeninizin uygulama paketini hedefleyin (manifest ile ilgili aşağıdaki bölüme bakın). Bu durumda, uygulamanızın makefile kendi certificate ayarı olabilir ve enstrümantasyon modülünüz aynı ayarı korumalıdır. Bunun nedeni, enstrümantasyonunuzu test edilen uygulamada hedeflemek için test apk'nizin ve uygulama apk'nizin aynı sertifikayla imzalanmış olması gerektiğidir.

Diğer durumlarda, bu ayara sahip olmanıza hiç gerek yoktur: derleme sistemi, bunu derleme varyantına dayalı olarak varsayılan bir yerleşik sertifikayla imzalar ve buna genellikle dev-keys denir.

    test_suites: ["device-tests"],

test_suites ayarı, testi Trade Federation test koşum takımı tarafından kolayca keşfedilebilir hale getirir. Bu testin paylaşılabilmesi için CTS gibi başka süitler de buraya eklenebilir.

${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk

İsteğe bağlı ayarlar

Aşağıdaki isteğe bağlı ayarlar açıklama toplar:

    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 yanındaki bir 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ı belirtir. Android.bp 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 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 MinApiLevelModuleController'ı otomatik oluşturulan test yapılandırmasına eklemesi talimatını verir. Trade Federation, test yapılandırmasını çalıştırdığında, ro.product.first_api_level < test_min_api_level öğesinin cihaz özelliği varsa test atlanır.