2013-11-15 23 views
5

Bir Web Uygulaması testini otomatikleştirmek için Java, JUnit ve Selenuim WebDriver kullanarak bir test Suite uygulamış Bağlam. Test Suite, Jenkins içerisinde TestSuite veya SUT'deki değişikliklerin yeniden yapılandırıldığı bir Maven Job olarak dağıtılmıştır. Jenkins, aynı zamanda, test programlarının hedef programın farklı programlayıcılar kullanarak hem program hem de talep üzerine sürekli olarak test edilmesi için bir dizi en üst düzey maven işi için de TestSuite çalıştırır. Surefire eklentisi, test sonuçlarını görünür yapmak için ve Test Kapsamı için Emma eklentisi olarak kullanılır.Bağlama Surefire Testi Jenkins içinde WebDriver Ekran sonuçtan

JUnit @Test başarısız olduğunda (yani SUT'de bir hata algılamıyorsa, bir test paketi hatası değil), bu süit, Tarayıcı'nın ekranının Jenkins çalışma alanındaki bir klasörde kaldığı bir ekran görüntüsünü alır. Ekran görüntüsü dosya adı, test günlüğüne kaydedilen bir UUID'dir. Bu tüm genel olarak çok iyi çalışıyor.

Soru Ekran görüntüleri, Jenkins UI aracılığıyla çalışma alanına girilerek görülebilir. Ancak bu bir beceriksiz mekanizmadır. Jenkins UI'de Surefire sonuçlarını ve/veya konsol çıktısını belirli ekran görüntüsüne köprülemek için bir yol bulmak istiyorum. Örneğin. günlüğündeki UUID'ye tıklayarak.

cevap

3

Mükemmel bir soru. Ben de benzer bir şeyi uygulamaya koyuldum. Bu tam olarak aradığınız şey olmasa da, ekran görüntülerini Jenkins kullanıcı arayüzünde (dosya sistemi erişiminin aksine) kullanılabilir hale getirir. https://wiki.jenkins-ci.org/display/JENKINS/JUnit+Attachments+Plugin

Ben dosyalar mümkün değilse bir hata ile ilgili dışarı varolan soru görülebilmesini adres: Jenkins JUnit Attachments Plugin throws 404 for attached files

ihtiyacınız

ilk şey Jenkins JUnit Eklenti eklentidir Ancak, Maven eklentisini yeniden derlemeyi başardım ve işe koyuldum. Talimatlar vermekten veya derlenmiş .hpi dosyasını göndermekten mutluluk duyarım (tek satır değişikliği).

Temelde) testi başarısız olduğunda bir ekran görüntüsü yakalama (ve eki eklentisi gerektirdiği şekilde (doğru dizine kaydedin benim testlerde bu kodu içerir Ayrıca isimleri başarısız testten sonra ekran görüntüsü:.

testi başarılı olursa

@Rule 
public TestRule watcher = new TestWatcher() { 
    @Override 
    public void finished(Description description) { 
     driver.quit(); 
    } 

    @Override 
    public void failed(Throwable e, Description description) { 
     try { 
      File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 

      String filePathRoot = "C:\\_Jenkins\\workspace\\" + jenkinsJobName + "\\target\\surefire-reports\\"; 
      String fullFilePath = filePathRoot + description.getClassName() + "\\" + description.getMethodName() + ".jpg"; 

      FileUtils.copyFile(screenshot, new File(fullFilePath)); 
     } catch(Exception ex) { 
      System.out.println(ex.toString()); 
      System.out.println(ex.getMessage()); 
     } 

     driver.quit(); 
    } 
}; 
, "bitmiş" yöntemi yerine denir.

Sonuçta bir test başarısız olduğunda inşa bir jenkins bağlı bir görüntü var.

nb benim testlerin tamamı vardır Windows 7 VM'de çalıştır (köle), gördüğünüz her yol özellikle Windows için.

1

Bence Junit raporlarını genişletmelisin. Bu zaten here yanıtladı. Bir yan not, UI testleri kabul testleri ve salatalık gibi bir BDD çerçeve onlar için mükemmel bir uyumdur. Cucumber-JVM'a bir göz atın, Junit ile sıkı bir şekilde bütünleşiyor ve raporun ekran görüntüsünü gömmek için mükemmel destek sağlıyor. Ayrıca, testlerinizi this gibi jenkins eklentileriyle işletme sahiplerine de iyi bir görünürlük sağlıyor.

+0

Girdiğiniz için teşekkürler, bu cevabı zaten gördüm ve maven kullandığımdan beri durumumu kapsamayan bir karınca kullanmak için de geçerli. –