Bu sayfada, Tradefed'de yeni bir test çalıştırıcısı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 çalıştırıcı yazmak için ön koşul değildir. Test çalıştırıcıları ayrı olarak yazılabilir.
Asgari düzey: Arayüzü uygulayın
Tradefed test çalıştırıcısı olarak uygunluk için gereken minimum şart, IRemoteTest arayüzünü ve daha spesifik olarak run(TestInformation testInfo, ITestInvocationListener listener)
yöntemini uygulamaktır.
Bu yöntem, test çalıştırıcı kullanılırken koşum takımı tarafından çağrılır ve 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 çalıştırıcıdan rapor sonuçları
Temel arayüzdeki run
yöntemi, şu işleyici nesnesine erişim sağlar:
ITestInvocationListener
yazın. Bu nesne, test çalıştırıcıdan koşum takımına yapılan yapılandırılmış sonuçların raporlanmasının anahtarıdır.
Yapılandırılmış sonuçları raporlayan bir test çalıştırıcı aşağıdaki özelliklere sahiptir:
- 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
irdeleyelim.
- testStarted: Başlatılan bir test durumunun başlangıcını bildirir.
- testFailed/testIgnored: Devam eden testin durumundaki değişikliği bildirir. Durum değişikliği olmayan test durumları başarılı kabul edilir.
- testEnded: Test durumunun sona erdiğini bildirir.
- testRunFailed: Test durumu grubunun genel durumunu bildir başarısızlıkla sonuçlanır. Test çalıştırma, yürütmenin beklediğine bağlı olarak test durumu sonuçlarından bağımsız olarak geçti veya geçmedi olabilir. Örneğin, birkaç test durumu çalıştıran bir ikili, tüm test durumlarının geçtiğini ancak hata çıkış koduyla (herhangi bir nedenle: sızdırılan dosyalar vb.) bildirebilir.
- testRunEnded: Test durumu grubunun sonunu bildirir.
Geri çağırmaların doğru sırasını korumak ve sağlamak test çalıştırıcı uygulayıcının sorumluluğundadır. Örneğin, finally
yan tümcesi kullanılarak istisna durumunda testRunEnded
çağrılmasını sağlamak.
Test durumları için geri aramalar (testStarted
, testEnded
vb.) isteğe bağlıdır. Test çalıştırma işlemi, test durumu olmadan gerçekleşebilir.
Bu etkinlik yapısının tipik JUnit yapısından esinlendiğini fark edebilirsiniz. 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ından günlükleri raporlama
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ük 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:
- IDeviceTest, test edilen cihazı temsil eden
ITestDevice
nesnesini almasına ve onunla etkileşim kurmak için API'yi sağlamasına olanak tanır. - 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ı, genellikle yürütmeyle ilgili yapıları (ör. ek dosyalar) almak ve yürütme sırasında hedeflenecek test cihazını almak için bu arayüzlerle ilgilenir.
Birden fazla cihazla test edin
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
yolunu içeren bir harita almanıza olanak tanır.
cihaz temsillerinin tam listesi ve bunlarla ilişkili derleme bilgileri
Arayüzdeki ayarlayıcı, her zaman run
yönteminden önce çağrılır. Bu nedenle, run
çağrıldığında yapının kullanılabileceğini varsayabilirsiniz.
Kurulumlarının farkında olarak testler
Bazı test çalıştırıcı uygulamalarının düzgün çalışması için genel kurulumla ilgili bilgilere (ör. çağrıyla ilgili bazı meta veriler veya daha önce hangi target_preparer
'ün çalıştırılacağı) ihtiyacı olabilir.
Test çalıştırıcı, bunu yapmak için parçası olduğu ve içinde çalıştırıldığı IConfiguration
nesnesine erişebilir. 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ı, testleri üzerinde ayrıntılı kontrole sahipse testlerini çalıştırmanın esnek bir yolunu sağlayabilir. Örneğin, JUnit test çalıştırıcıları her birim testini ayrı ayrı çalıştırabilir.
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ına izin verir.
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 etme filtresi belirtilmezse hariç tutma filtrelerinden hiçbiriyle eşleşmediği sürece tüm testler çalıştırılmalıdır.