Depo istemcinizi başlatma
Aşağıdaki adımları uygulayarak Kaynağı İndirme'ye giderek
ve Android kaynak kodunu oluşturalım. repo init
komutunu verirken
belirli bir CTS dalını kullanma: -b
. Bu, CTS değişikliklerinizin dahil edilmesini sağlar
sonraki CTS sürümlerinde yer alacak.
Aşağıdaki örnek kodda repo init
özelliğinin nasıl kullanılacağı gösterilmektedir.
mkdir android11-tests-dev && cd android11-tests-dev && repo init -c -u https://android.googlesource.com/platform/manifest -b android11-tests-dev --use-superproject --partial-clone --partial-clone-exclude=platform/frameworks/base --clone-filter=blob:limit=10M && repo sync -c -j8
CTS'yi oluşturma ve çalıştırma
CTS'yi oluşturmak ve etkileşimli projeyi başlatmak için aşağıdaki komutları yürütün CTS konsolu:
cd /path/to/android/root
make cts -j32 TARGET_PRODUCT=aosp_arm64
cts-tradefed
CTS konsolunda şunları girin:
tf> run cts --plan CTS
CTS testlerini yazma
talimatlarıCTS testleri, JUnit ve Android test API'lerini kullanır. Şu göz atın:
Test etme
uygulamanızı
eğiticiyi ve cts/tests
dizini altındaki mevcut testleri içerir.
CTS testleri çoğunlukla diğer Android testlerinde kullanılan kuralları uygular.
CTS birçok üretim cihazında çalışır, bu nedenle testlerin şu kuralları kabul edin:
- Çeşitli ekran boyutlarını, yönleri ve klavye düzenlerini dikkate alın.
- Yalnızca herkese açık API yöntemlerini kullanın. Başka bir deyişle,
hide
ek açıklamasıyla gösterilir. - Görünüm düzenleri kullanmaktan veya öğelerin, bazı öğelerde bulunmayan boyutlarına güvenmekten kaçının. cihazlar.
- Kök ayrıcalıklarına güvenmeyin.
Java ek açıklaması ekle
Testiniz bir API davranışını doğrularsa test kodunuza @ApiTest
ile ek açıklama ekleyin ve
apis
alanında yer alan tüm API'ler. Aşağıdakiler arasından uygun biçimi kullanın:
şu örneklere bakabilirsiniz:
API türü | Ek açıklama biçimi | Notlar |
---|---|---|
Yöntem | android.example.ClassA#methodA |
En yaygın kullanım alanıdır. |
Anahtar/değer çiftleri yöntemi | android.example.ClassB#methodB(KeyA) |
Aşağıdaki gibi yalnızca testiniz bir alanı doğrulamak için API yöntemi kullandığında kullanın: inceleyin. |
Alan | android.örnek.SınıfC#AlanA | Aşağıdaki gibi yalnızca testiniz bir API alanını doğrudan doğruladığında kullanın inceleyin. |
Testiniz bir CDD gereksinimini doğruluyorsa gereksinim kimliğini (CDD bölümü dahil) ekleyin
(Kimlik ve Gereksinim Kimliği) aşağıda gösterildiği şekilde, CTS test kodunda @CddTest
örneği inceleyelim. Taahhüt mesajınızda, bağlı olduğunuz CDD'nin hangi CDD koşulunun karşılandığını belirtin
test etmek için CDD şart kimliklerine
bakarak test etmeyi unutmayın. CDD gereksinim kimlikleri, bölüm kimliğinin bir kombinasyonudur
ve gereksinim kimliği (7.3.1/C-1-1'de olduğu gibi eğik çizgi (/) ile bağlanmıştır).
/**
* Verify Passpoint configuration management APIs for a Passpoint
* @throws Exception
*/
@CddTest(requirement="7.4.2.3/C-1-1,C-2-1")
public void testAddPasspointConfigWithUserCredential() throws Exception {
if (!WifiFeature.isWifiSupported(getContext())) {
// skip the test if WiFi is not supported
return;
} testAddPasspointConfig(generatePasspointConfig(generateUserCredential()));
}
CTS Doğrulayıcı için AndroidManifest.xml
etiketinizdeki her Etkinlik için
ilgili CDD kimliği. Değer alanlarına ilişkin biçimler,
CTS Taahhüt mesajında, CDD'ye referans vererek hangi CDD koşulunun uygulandığını belirtin
gereklilik kimliği.
<activity>
......
<!-- OPTIONAL: Add a meta data attribute to indicate CDD requirements. -->
<meta-data android:name="cdd_test" android:value="7.4.1/C-4-1" />
<!-- OPTIONAL: Add a meta data attribute to indicate APIs being tested. -->
<meta-data android:name="api_test"
android:value="com.example.MyClass#myMethod" />
<!-- OPTIONAL: Add a metadata attribute to indicate the reason why the test doesn't enforce any CDD requirement but still useful in CTS-V. -->
<meta-data android:name="non_compliance_test"
android:value="detailed reasons" />
</activity>
Kaydetme mesajında
Testinizin neden eklenmesi gerektiğini açıkça belirtin ve destek için alakalı bağlantılar ekleyin. CTS-D için testlerinin bir parçası olarak Google Sorun İzleyici'de oluşturduğunuz test teklifinin bağlantısını CTS-D gönderim sürecini takip edin.
Alt plan oluşturun
Örneğin, panele bir SubPlan.xml dosyası ekleyebilirsiniz.
android-cts/subplans
şöyle:
<?xml version="1.0" encoding="utf-8" standalone="no"?> <SubPlan version="2.0"> <Entry include="CtsSystemIntentTestCases" /> <Entry include="CtsSystemUiHostTestCases" /> <Entry include="CtsSecurityHostTestCases android.security.cts.SELinuxHostTest#testAospFileContexts" /> <Entry include="CtsSecurityHostTestCases android.security.cts.SELinuxHostTest#testAospServiceContexts" /> </SubPlan>
Alt planı çalıştırmak için:
run cts --subplan aSubPlan
Alt plan giriş biçimi şu şekildedir:
Include a module name as follows: <Entry include="MODULE_NAME" /> Include a package: <Entry include="MODULE_NAME PACKAGE_NAME" /> Include a class: <Entry include="MODULE_NAME PACKAGE_NAME.CLASS_NAME" /> Include an individual test: <Entry include="MODULE_NAME PACKAGE_NAME.CLASS_NAME#TEST_NAME" />
Adlandırmayı ve konumu test edin
Çoğu CTS test durumu, Android API'deki belirli bir sınıfı hedefler. Bu testler
cts
son ekine sahip Java paketi adlarına ve
Test
son eki. Her test durumu birden çok testten oluşur. Testlerin her biri
testi genellikle test edilen sınıfın belirli bir yöntemini uygular.
Bu testler, testlerin gruplandığı bir dizin yapısı halinde düzenlenir.
"widget'lar" gibi farklı kategorileri veya "görüntüleme sayısı" gibi.
Örneğin, Java paketi için CTS testi
android.widget.TextView
Java paketi adı şu şekilde: android.widget.cts.TextViewTest
android.widget.cts
ve sınıf adı:
TextViewTest
.
- Java paketi adı
CTS testleri için Java paketi adı testin test ettiği sınıfın paket adıdır ve ardından.cts
. Örneğimizde paket adıandroid.widget.cts
- Sınıf adı
CTS testlerinin sınıf adı "Test" ile test edilen sınıfın adı eklendi. Örneğin, Örneğin, bir testTextView
hedefini hedefliyorsa, sınıf adı şöyle olmalıdır:TextViewTest
. - Modül adı (yalnızca CTS v2)
CTS v2, testleri modüle göre düzenler. Modül adı genellikle Java paket adının ikinci dizesidir ( örnek,widget
).
Dizin yapısı ve örnek kod, CTS v1 mi yoksa CTS v2 mi kullandığınıza bağlıdır.
CTS s1
Android 6.0 veya önceki sürümler için CTS v1'i kullanın. CTS v1 için örnek kod
cts/tests/tests/example
CTS v1 testlerindeki dizin yapısı aşağıdaki gibi görünür:
cts/ tests/ tests/ package-name/ Android.mk AndroidManifest.xml src/ android/ package-name/ SampleDeviceActivity.java cts/ SampleDeviceTest.java
CTS v2
Android 7.0 veya sonraki sürümler için CTS 2 sürümünü kullanın. Ayrıntılar için bkz. Android Açık Kaynak Projesi'nde (AOSP) örnek test.
CTS v2 dizin yapısı aşağıdaki gibi görünür:
cts/ tests/ module-name/ Android.mk AndroidManifest.xml src/ android/ package-name/ SampleDeviceActivity.java cts/ SampleDeviceTest.java
Yeni örnek paketler
Yeni testler eklerken, testi. Bu tür durumlarda, dizini oluşturmanız ve örnek dosyalar oluşturun.
CTS s1
CTS v1 kullanıyorsanız
cts/tests/tests/example
sayfasına giderek yeni bir dizin oluşturun. Ayrıca,
Android.mk
bölümünden yeni paketinizin modül adını eklediğinizden emin olun
- CTS_COVERAGE_TEST_CASE_LIST
inç
cts/CtsTestCaseList.mk
. build/core/tasks/cts.mk
bu oluşturma dosyasını kullanır
tüm testleri birleştirmek ve son CTS paketini oluşturmaktır.
CTS v2
Örnek testi kullanma
/cts/tests/sample/
yeni test modülünüzü aşağıdaki adımları uygulayarak hızlıca başlatın:
- Test dizinini oluşturmak ve örnek dosyaları kopyalamak için şu komutu çalıştırın:
mkdir cts/tests/module-name && cp -r cts/tests/sample/* cts/tests/module-name
cts/tests/module-name
adresine gidin ve tüm örneklerini değiştirin "[Ss]bol" şununla: Yukarıdaki önerilen adlandırma kuralını inceleyin.- Test ettiğiniz özelliği kullanmak için
SampleDeviceActivity
uygulamasını güncelleyin. - Etkinliğin başarılı olduğundan veya günlüğe kaydedildiğinden emin olmak için
SampleDeviceTest
uygulamasını güncelleyin emin olun.
Ek dizinler
assets
, jni
, gibi diğer Android dizinleri
libs
ve res
de eklenebilir.
JNI kodu eklemek için
yerel dizin içeren src
öğesinin yanında, projenin kök dizininde bir dizin oluşturun
bir Android.mk
setfile'ı yer alır.
Makefile genellikle aşağıdaki ayarları içerir:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libCtsSample_jni # don't include this package in any target LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := list of source code files LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) # Tag this module as a cts test artifact LOCAL_COMPATIBILITY_SUITE := cts LOCAL_SHARED_LIBRARIES := libnativehelper LOCAL_SDK_VERSION := current include $(BUILD_SHARED_LIBRARY)
Android.mk dosyası
Son olarak, Android.mk
dosyasını
projesindeki adımları uygulayın:
# All tests should include android.test.runner. LOCAL_JAVA_LIBRARIES := android.test.runner # Includes the jni code as a shared library LOCAL_JNI_SHARED_LIBRARIES := libCtsSample_jni # Include for InstrumentationCtsTestRunner LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner... LOCAL_SDK_VERSION := currentinclude $(BUILD_CTS_PACKAGE) #Tells make to look in subdirectories for more make files to include include $(call all-makefiles-under,$(LOCAL_PATH))
Testleri düzeltin veya kaldırın
Yeni testler eklemenin yanı sıra, test amaçlı veya
BrokenTest
veya KnownFailure
ile açıklama eklenen testleri kaldırın.
Değişikliklerinizi gönderin
AOSP'de CTS veya VTS yamaları gönderirken geliştirme dalınızı seçin düzeylerine göre değiştirilir.
-
Birden fazla API düzeyinde geçerli olan değişiklikler için önce
aosp/main
içinde bir yama geliştirin ve en uygun yukarı akış test dalını kullanabilirsiniz. Otomatik birleştiricinin, aşağı akıştaki değişiklikleri birleştirmesine izin ver: AOSP test dalları. Şubelerin listesi ve otomatik birleştirme yolu bilgileri için Sürüm planı ve şube bilgileri başlıklı makaleyi inceleyin. - Belirli bir API seviyesine özgü değişiklikler için, kendiniz geliştirin veya seçiminizi yapın doğru test dalını değiştirmek için DO NOTBirleştir veya RESTRICT OTOMATİK'i belirten bir değer girin.
Yama gönderme iş akışını uygulayın destekleyici materyalleri inceleyeceksiniz. Değişikliğinizi incelemek üzere bir inceleme uzmanı atanır.
Yayın planı ve şube bilgileri
CTS yayınları bu programı takip eder.
Sürüm | API seviyesi | Şube | Frekans |
---|---|---|---|
15 | 35 | android15-test-dev | Üç Aylık |
14 | 34 | android14-test-dev | Üç Aylık |
13 | 33 | android13-test-dev | Üç Aylık |
12L | 32 | android12L-test-dev | Üç Aylık |
12 | 31 | android12-test-dev | Üç Aylık |
Yayın sırasındaki önemli tarihler
- İlk haftanın sonu: Kod donar. Değişiklikler dalda birleştirildi kullanıma sunulması planlanıyor. Kod dondurulduktan sonra veya bir program için aday olduktan sonra şubeye yapılan gönderimler sonraki yayın için dikkate alınır.
- İkinci veya üçüncü hafta: CTS şurada yayınlanır: AOSP.
Otomatik birleştirme akışı
CTS geliştirme dalları oluşturuldu. Böylece, dal otomatik olarak daha yüksek dallara birleştirilir.
Doğrudan bir AOSP test geliştirme dalında yapılan değişiklikler için otomatik birleştirme yolu şu şekildedir:
android11-tests-dev
android12-tests-dev
android12L-tests-dev
android13-tests-dev
android14-tests-dev
>
android15-tests-dev
>
aosp-main
Yalnızca bir sonraki Android sürümünde yapılan değişiklikler için otomatik birleştirme yolu şu şekildedir:
aosp-main
<Internal git_main>
.
Değişiklik listesi (CL) düzgün şekilde birleştirilemezse yamanın yazarı gönderilir çakışmanın nasıl çözüleceğine ilişkin talimatları içeren bir e-posta. Bölgenizin durumlarda, yamanın yazarı, çakışan CL.
Eski bir dal için değişiklik gerekiyorsa yamanın özenle seçilmiştir.