2013-11-15 12 views
5

Il contesto Ho implementato una suite di test utilizzando Java, JUnit e Selenuim WebDriver per automatizzare il testing di un'applicazione Web. La Test Suite viene distribuita come un lavoro di Maven all'interno di Jenkins che si ricostruisce sulle modifiche a TestSuite o SUT. Jenkins esegue anche TestSuite per un certo numero di lavori di primo livello per i casi di test per testare continuamente il sistema di destinazione utilizzando diversi browser, sia in base alla pianificazione che a richiesta. Il plug-in Surefire viene utilizzato per rendere visibili i risultati del test e il plug-in Emma per la copertura del test.Linking Surefire dei risultati dei test di WebDriver Screenshots entro Jenkins

Quando un JUnit @Test non riesce (ovvero rileva un errore nel SUT, non un errore della suite di test) la suite esegue una schermata del Browser che persiste in una cartella nell'area di lavoro di Jenkins. Il nome file della schermata è un UUID che viene registrato nel registro di prova. Tutto funziona molto bene nel complesso.

La domanda Le schermate sono visibili eseguendo il drill nell'area di lavoro tramite l'interfaccia utente di Jenkins. Tuttavia questo è un meccanismo goffo. Voglio trovare un modo nell'interfaccia utente di Jenkins per collegare i risultati Surefire e/o l'output della console alla schermata specifica. per esempio. facendo clic sull'URU nel registro.

risposta

3

Ottima domanda. Ho appena implementato qualcosa di simile. Anche se questo non è esattamente quello che stai cercando, rende gli screenshot disponibili nell'interfaccia utente di Jenkins (al contrario dell'accesso al file system).

La prima cosa che ti serve è il Jenkins JUnit plug Allegato: https://wiki.jenkins-ci.org/display/JENKINS/JUnit+Attachments+Plugin

Ho una domanda esistente fuori per quanto riguarda un bug in cui i file non sono in grado di essere visto Jenkins JUnit Attachments Plugin throws 404 for attached files

Tuttavia, sono riuscito a ricompilare il plug-in Maven e farlo funzionare. Sarei felice di fornire istruzioni o di inviarti il ​​file .hpi compilato (è una modifica di una riga).

Fondamentalmente ho includere questo codice nel mio test di catturare uno screenshot quando il test fallisce (e salvarlo nella directory corretta (come richiesto dal plugin allegato) anche nomi lo screenshot dopo il test fallito:.

@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(); 
    } 
}; 

Se il test capita di avere successo, il metodo del "finito" si chiama invece.

il risultato finale è uno screenshot allegato a un Jenkins costruire ogni volta che un test ha esito negativo.

nb Tutti i miei test sono eseguire su una VM di Windows 7 (slave), quindi qualsiasi percorso visualizzato è specifico per Windows.

1

Penso che sia necessario estendere i rapporti Junit. Questo ha già risposto here. In una nota a margine, i test dell'interfaccia utente sono test di accettazione e una struttura BDD come il cetriolo è perfetta per loro. Dai un'occhiata a Cucumber-JVM, è strettamente integrato con Junit e ha un eccellente supporto per incorporare schermate al report, ecc. Offre anche una buona visibilità dei tuoi test ai proprietari di aziende con plugin jenkins come this.

+0

Grazie per il vostro contributo, ho già visto quella risposta e si applica all'uso di formica per costruire che non copre la mia situazione dal momento che sto usando Maven. –

Problemi correlati