Bu sayfada, Tradefed'de yeni bir test çalıştırıcının nasıl yazılacağı açıklanmaktadır.
Arka plan
Tradefed mimarisindeki test çalıştırıcılarının yerini merak ediyorsanız Test Çalıştırıcısının Yapısı adlı makaleyi inceleyin.
Bu, yeni bir test koşucusu yazmak için bir ön koşul değildir; test katılımcıları her şeyi gözden geçireceğiz.
Minimum sınır: Arayüzü uygulayın
Tradefed test koşucusu olmak için gereken kriter,
IRemoteTest arayüzü
ve daha açık bir şekilde belirtmek gerekirse run(TestInformation testInfo, ITestInvocationListener listener)
yöntemini kullanır.
Bu yöntem, test çalıştırıcıyı kullanırken koşu takımı tarafından çağrılan yöntemdir. Bu, Java Runnable'a benzer.
Bu yöntemin her bölümü, test çalıştırıcısı yürütme işleminin bir parçası olarak kabul edilir.
Test koşucusunun sonuçlarını raporla
Temel arayüzdeki run
yöntemi, şu işleyici nesnesine erişim sağlar:
ITestInvocationListener
yazın. Bu nesne, yapılandırılmış raporlamanın
otomatik olarak uyarlanır.
Yapılandırılmış sonuçları raporlayan test çalıştırıcı, aşağıdaki özelliklere sahip olur:
- Yapılan tüm testlerin, bunların ne kadar sürdüğünü ve testlerin yapılıp yapılmadığını başarılı, başarısız veya diğer bazı durumları görebilirsiniz.
- Varsa testlerle ilişkili metrikleri raporla yükleme süresi metrikleridir.
- Altyapı araçlarının çoğuna uyum sağlar. Örneğin, sonuçları görüntüleme ve kullanabilirsiniz.
- Veriler daha ayrıntılı şekilde açıklandığından, hataların ayıklanması genellikle daha kolaydır. birkaç adım var.
Bununla birlikte, yapılandırılmış sonuçların raporlanması isteğe bağlıdır; test koşucusu tüm çalışmanın durumunu BAŞARILI veya BAŞARISIZ olarak değerlendirmek ayrıntılarına dikkat edin.
Dinleyicide aşağıdaki etkinlikler çağrılabilir: ilerleme durumu:
- testRunStarted: Mevcut bir test durumu grubunun başlangıcını bildir
bir araya getirmektir.
- testStarted: Başlatılan bir test durumunun başlangıcını bildirir.
- testFailed/testignored: Test durumunun durum değişikliğini bildirin devam ediyor. Durum değişikliği içermeyen bir test durumu dikkate alınır başarılı oldu.
- testEnded: Test durumunun sonunu bildirin.
- testRunFailed: Test durumu grubunun genel durumunu bildir başarısızlıkla sonuçlanır. Test çalıştırması, başarılı veya başarısız olabilir test senaryolarının sonuçlarından bağımsız olarak beklediğinizi düşünelim. Örneğin, birden fazla test durumu çalıştıran bir ikili program tüm başarılı test durumlarını raporlayabilir, ancak bu durumda bir hata çıkış kodu ile (herhangi bir nedenler: sızdırılan dosyalar vb.).
- testRunEnded: Test durumu grubunun sonunu bildirir.
Geri aramaların doğru sıralamasını korumak ve sağlamak
uygulayıcının sorumluluğundadır (ör. test amaçlı olarak
İstisna durumunda testRunEnded
, finally
ifadesi kullanılarak çağrılır.
Test durumları geri çağırmaları (testStarted
, testEnded
vb.) isteğe bağlıdır. Test
herhangi bir test durumu olmadan gerçekleşebilir.
Bu etkinlik yapısının, benimsediğimiz tipik JUnit yapısı vardır. Burada amaç, geliştiricilerin bildiği temel bir noktaya yakın tutmaktır. belirli görevleri tamamlamaya yardımcı olur.
Test çalıştırıcısının günlükleri
Kendi Tradefed test sınıfınızı veya koşucunuzu yazıyorsanız,
IRemoteTest
ve run()
yöntemiyle ITestInvocationListener
kazanın. Bu dinleyici
dosyaları aşağıdaki şekilde günlüğe kaydetmek için kullanılabilir:
listener.testLog(String dataName, LogDataType type_of_data, InputStreamSource data);
Bir cihazla test etme
Yukarıdaki minimum arayüz, diğer tüm standartlarla izole edilmiş çok basit testlerin ve Java birim testleri gibi belirli bir kaynak gerektirmez.
Cihaz testinin bir sonraki adımına geçmek isteyen test yazarları için aşağıdaki arayüzleri destekler:
- Cihaz Testi
altında cihazı temsil eden
ITestDevice
nesnesinin alınmasına izin verir test eder ve etkileşimde bulunması için API'yi sağlar. - IBuildReceiver
testin, aynı zamanda
IBuildInfo
nesnesinin derleme sağlayıcı adımı (test kurulumuyla ilgili tüm bilgileri ve yapıları içeren)
Test çalıştırıcıları, oyun geliştirebilmek için genellikle bu arayüzlerle ilgilenirler. yürütmeyle ilgili yapıları (örneğin ekstra dosyalar) bulabilir, uygulama sırasında hedeflenecek olan test edilen cihaz.
Birden fazla cihazla test etme
Tradefed, aynı anda birden çok cihazda test çalıştırmayı destekler. Bu Örneğin, harici etkileşim gerektiren bileşenleri test ederken faydalıdır. telefon ve kol saati eşleniyor.
Birden fazla cihaz kullanabilen bir test çalıştırıcısı yazabilmek için
dönüşüm değerini
IMultiDeviceTest,
Bu işlem, ITestDevice
- IBuildInfo
için aşağıdakileri içeren bir harita almanızı sağlar:
cihaz temsillerinin tam listesi ve bunlarla ilişkili derleme bilgileri
Arayüzdeki belirleyici, her zaman run
yönteminden önce çağrılır
run
çağrıldığında yapının kullanılabilir olacağını varsayabilirsiniz.
Kurulumlarının farkında olan testler
Bazı test çalıştırıcı uygulamaları için genel kurulum hakkında bilgi gerekebilir
düzgün çalışması için gereklidir. Örneğin, çağrıyla ilgili bazı meta veriler
target_preparer
vb.
Test çalıştırıcısı, bunu başarmak için IConfiguration
nesnesine erişebilir
gerçekleştirildiği bir süreçtir. Bkz.
yapılandırma nesnesi
açıklamasına bakın.
Test çalıştırıcısı uygulaması için, test sırasında
IConfigurationReceiver
IConfiguration
nesnesini almak için.
Esnek test çalıştırıcı
Test çalıştırıcıları, testlerini yürütmek için esnek bir yöntem sunabilirlerse ayrıntılı bir kontrol sağlar (örneğin, bir JUnit test çalıştırıcısı, her birim testini çalıştıracaksınız.
Bu sayede, daha geniş kitlelerin ve altyapıların söz konusu hassas denetim ve kullanıcıların filtreleme yoluyla test çalıştırıcısını kısmen çalıştırmasını sağlar.
Filtreleme desteği şurada açıklanmıştır:
ITestFilterReceiver arayüzü,
Bu değer, testler için include
ve exclude
filtre gruplarını almaya olanak tanır
otomatik olarak yükleyebilirsiniz.
Kurallarımıza göre test, IFF kullanılarak çalıştırılacak ve bir veya daha fazla dahil et filtreleri VE hariç tutma filtrelerinin hiçbiriyle eşleşmemektedir. Dahil değilse sağlandığı takdirde, tüm testler, bu filtrelerden herhangi biriyle eşleşmediği sürece çalıştırılmalıdır. hariç tutma filtrelerini kullanabilirsiniz.