Tradefed test çalıştırıcı yazma

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.