Basit yapı yapılandırması

Her yeni test modülü, derleme sistemini modül meta verileri, derleme zamanı bağımlılıkları ve paketleme talimatlarıyla yönlendirecek bir yapılandırma dosyasına sahip 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 format, önceki sürümlerde kullanılan Make tabanlı sistemin yerini alır. Tüm ayrıntılar için Sürekli Entegrasyon Kontrol Panelindeki Soong referans dosyalarına bakın.

Özel testlere uyum sağlamak veya Android Uyumluluk Test Paketini (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: ["androidx.test.runner"],
    certificate: "platform",
    test_suites: ["device-tests"],
}

Başlangıçtaki android_test bildiriminin bunun bir test olduğunu gösterdiğini unutmayın. android_app dahil edilmesi, bunun tersine, bunun bir derleme paketi olduğunu gösterir.

Ayarlar

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

    name: "HelloWorldTests",

android_test modül tipi belirtildiğinde (bloğun başlangıcında) name ayarı gereklidir. Modülünüze bir isim verir ve ortaya çıkan APK aynı şekilde ve .apk son ekiyle adlandırılacaktır; örneğin bu durumda, ortaya çıkan test apk'si HelloWorldTests.apk olarak adlandırılır. Ek olarak, bu aynı zamanda modülünüz için bir make target 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çeriğini geçerli modülün sonuçtaki apk'sine dahil etmesi talimatını verir. Bu, adlandırılmış her modülün bir .jar dosyası oluşturmasının beklendiği ve içeriğinin, derleme süresi boyunca sınıf yolu referanslarını çözümlemek için kullanılacağı ve sonuçta ortaya çıkan apk'ye dahil edileceği anlamına gelir.

androidx.test.runner modülü, AndroidJUnitRunner test çalıştırıcısını içeren AndroidX Test Çalıştırıcısı Kitaplığı için önceden oluşturulmuş bir modüldür. AndroidJUnitRunner JUnit4 test çerçevesini destekler ve Android 10'da InstrumentationTestRunner yerini almıştır. Android uygulamalarını test etme hakkında daha fazla bilgiyi Android'de test uygulamaları bölümünde bulabilirsiniz.

Yeni bir enstrümantasyon modülü oluşturuyorsanız, test çalıştırıcınız olarak her zaman androidx.test.runner kütüphanesiyle başlamalısınız. Platform kaynak ağacı aynı zamanda 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 örnekleme amacıyla kullandığını unutmayın: örneğin test kodunun aslında test apk'sinin özel platform sertifikasıyla imzalanması gerekmez.

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'si gibi paketlenmişse, muhtemelen enstrümantasyonunuzun bileşeninizin uygulama paketini (bildirimle ilgili aşağıdaki bölüme bakın) hedefleyin. 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 uygulamaya yönelik enstrümantasyonunuzu hedeflemek için test apk'nızın ve uygulama apk'nizin aynı sertifikayla imzalanması gerekmesidir.

Diğer durumlarda, bu ayara hiç sahip olmanıza gerek yoktur: derleme sistemi bunu, derleme değişkenine bağlı olarak varsayılan bir yerleşik sertifikayla imzalar ve buna genellikle dev-keys adı verilir.

    test_suites: ["device-tests"],

test_suites ayarı, testin Ticaret Federasyonu test donanımı tarafından kolayca keşfedilmesini sağlar. Bu testin paylaşılabilmesi için buraya CTS gibi başka süitler 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 ihtiyaç duyduğu talimatını verir. Varsayılan olarak Android.bp 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ı belirtir. AndroidTest.xml Android.bp yanında yoksa, bu özelliğin açıkça true olarak ayarlanmasına gerek yoktur.

    require_root: true

require_root ayarı, derleme sistemine otomatik olarak oluşturulan test yapılandırmasına RootTargetPreparer eklemesi talimatını verir. Bu, testin root 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 eklemesi talimatını verir. Ticaret Federasyonu test yapılandırmasını çalıştırdığında, ro.product.first_api_level cihaz özelliği < test_min_api_level ise test atlanacaktır.