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.