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 yönergeleri ile 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 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 gelir: /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ğ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 türü belirtildiğinde (bloğun başında) gereklidir. Modülünüze bir isim verir ve ortaya çıkan APK, aynı ve bir .apk sonekiyle isimlendirilir, örneğin bu durumda, ortaya çıkan test apk'sı HelloWorldTests.apk olarak adlandırılır. Buna ek olarak, bu aynı zamanda modülünüz için make hedef adını tanımlar, böylece make [options] <HelloWorldTests> test modülünüzü ve tüm bağımlılıklarını oluşturmak için kullanabilirsiniz.

    static_libs: ["androidx.test.runner"],

static_libs ayarı, oluşturma sistemine, adlandırılmış modüllerin içeriğini mevcut modülün sonuçtaki apk'sine dahil etmesini söyler. 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ı çözmek 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 Runner 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.

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şlamalısınız. Platform kaynak ağacı ayrıca ub-uiautomator , mockito-target , easymock ve daha fazlası gibi diğer yararlı test çerçevelerini içerir.

    certificate: "platform",

certificate ayarı, derleme sistemine apk'yı ç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ığına dikkat edin: ö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ünün içine yerleştirilmiş olması ve ayrıcalıklı bir uygulama olabilmesi dışında aşağı yukarı normal bir uygulama apk'si gibi paketlenmişse, muhtemelen enstrümantasyonunuz bileşeninizin uygulama paketini hedefliyor (manifest ile ilgili aşağıdaki bölüme bakın). Bu durumda, uygulama dosyanızın 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 hiç sahip olmanıza gerek yoktur: yapı sistemi, yapı değişkenine dayalı olarak bunu varsayılan bir yerleşik sertifikayla imzalayacaktır ve buna genellikle dev-keys adı verilir.

    test_suites: ["device-tests"],

test_suites ayarı, testin Trade Federation test donanımı tarafından kolayca keşfedilmesini sağlar. Bu testin paylaşılabilmesi için CTS gibi diğer süitler 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. AndroidTest.xml Android.bp yanında yoksa, bu özniteliğin açıkça doğru 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 izinlerle çalışmasını garanti eder.

    test_min_api_level: 29

test_min_api_level ayarı, yapı 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 < test_min_api_level cihaz özelliği ise test atlanacaktır.

,

Her yeni test modülünün, yapı sistemini modül meta verileri, derleme zamanı bağımlılıkları ve paketleme yönergeleri ile 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 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 gelir: /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ğ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 türü belirtildiğinde (bloğun başında) gereklidir. Modülünüze bir isim verir ve ortaya çıkan APK, aynı ve bir .apk sonekiyle isimlendirilir, örneğin bu durumda, ortaya çıkan test apk'sı HelloWorldTests.apk olarak adlandırılır. Buna ek olarak, bu aynı zamanda modülünüz için make hedef adını tanımlar, böylece make [options] <HelloWorldTests> test modülünüzü ve tüm bağımlılıklarını oluşturmak için kullanabilirsiniz.

    static_libs: ["androidx.test.runner"],

static_libs ayarı, oluşturma sistemine, adlandırılmış modüllerin içeriğini mevcut modülün sonuçtaki apk'sine dahil etmesini söyler. 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ı çözmek 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 Runner 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.

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şlamalısınız. Platform kaynak ağacı ayrıca ub-uiautomator , mockito-target , easymock ve daha fazlası gibi diğer yararlı test çerçevelerini içerir.

    certificate: "platform",

certificate ayarı, derleme sistemine apk'yı ç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ığına dikkat edin: ö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ünün içine yerleştirilmiş olması ve ayrıcalıklı bir uygulama olabilmesi dışında aşağı yukarı normal bir uygulama apk'si gibi paketlenmişse, muhtemelen enstrümantasyonunuz bileşeninizin uygulama paketini hedefliyor (manifest ile ilgili aşağıdaki bölüme bakın). Bu durumda, uygulama dosyanızın 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 hiç sahip olmanıza gerek yoktur: yapı sistemi, yapı değişkenine dayalı olarak bunu varsayılan bir yerleşik sertifikayla imzalayacaktır ve buna genellikle dev-keys adı verilir.

    test_suites: ["device-tests"],

test_suites ayarı, testin Trade Federation test donanımı tarafından kolayca keşfedilmesini sağlar. Bu testin paylaşılabilmesi için CTS gibi diğer süitler 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. AndroidTest.xml Android.bp yanında yoksa, bu özniteliğin açıkça doğru 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 izinlerle çalışmasını garanti eder.

    test_min_api_level: 29

test_min_api_level ayarı, yapı 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 < test_min_api_level cihaz özelliği ise test atlanacaktır.

,

Her yeni test modülünün, yapı sistemini modül meta verileri, derleme zamanı bağımlılıkları ve paketleme yönergeleri ile 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 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 gelir: /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ğ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 türü belirtildiğinde (bloğun başında) gereklidir. Modülünüze bir isim verir ve ortaya çıkan APK, aynı ve bir .apk sonekiyle isimlendirilir, örneğin bu durumda, ortaya çıkan test apk'sı HelloWorldTests.apk olarak adlandırılır. Buna ek olarak, bu aynı zamanda modülünüz için make hedef adını tanımlar, böylece make [options] <HelloWorldTests> test modülünüzü ve tüm bağımlılıklarını oluşturmak için kullanabilirsiniz.

    static_libs: ["androidx.test.runner"],

static_libs ayarı, oluşturma sistemine, adlandırılmış modüllerin içeriğini mevcut modülün sonuçtaki apk'sine dahil etmesini söyler. 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ı çözmek 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 Runner 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.

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şlamalısınız. Platform kaynak ağacı ayrıca ub-uiautomator , mockito-target , easymock ve daha fazlası gibi diğer yararlı test çerçevelerini içerir.

    certificate: "platform",

certificate ayarı, derleme sistemine apk'yı ç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ığına dikkat edin: ö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ünün içine yerleştirilmiş olması ve ayrıcalıklı bir uygulama olabilmesi dışında aşağı yukarı normal bir uygulama apk'si gibi paketlenmişse, muhtemelen enstrümantasyonunuz bileşeninizin uygulama paketini hedefliyor (manifest ile ilgili aşağıdaki bölüme bakın). Bu durumda, uygulama dosyanızın 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 hiç sahip olmanıza gerek yoktur: yapı sistemi, yapı değişkenine dayalı olarak bunu varsayılan bir yerleşik sertifikayla imzalayacaktır ve buna genellikle dev-keys adı verilir.

    test_suites: ["device-tests"],

test_suites ayarı, testin Trade Federation test donanımı tarafından kolayca keşfedilmesini sağlar. Bu testin paylaşılabilmesi için CTS gibi diğer süitler 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. AndroidTest.xml Android.bp yanında yoksa, bu özniteliğin açıkça doğru 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 izinlerle çalışmasını garanti eder.

    test_min_api_level: 29

test_min_api_level ayarı, yapı 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 < test_min_api_level cihaz özelliği ise test atlanacaktır.