2011-01-11 2 views
0

Existe-t-il un moyen de forcer Hudson à me fournir des résultats de test plus détaillés - par ex. Je compare deux chaînes et je veux savoir où elles diffèrent. Y a-t-il un moyen de le faire? Merci de votre aide.Détail Rapports de test Hudson

+2

Hudson est juste un outil d'intégration continue, agnostique de ce que la construction sous-jacente est. N'utilisez-vous pas Maven ou Ant ci-dessous pour effectuer votre build et exécuter des cas de test? C'est là que tu devrais regarder. – Damien

+0

Comme dit Damien. En outre, qu'est-ce que vous utilisez pour construire votre programme, et qu'utilisez-vous pour tester? – Sagar

+0

J'utilise Maven et JUnit - hudson puis signale les échecs possibles mais sans beaucoup de détails ... – Jarek

Répondre

0

Vous ne devriez pas espérer que Hudson donne les informations détaillées, il montre juste les messages de test générés par junit.

Vous pouvez afficher la chaîne attendue et la chaîne réelle en cas d'échec d'affirmation d'égalité entre ces deux chaînes.

Par exemple,

protected void compareFiles(File newFile, String referenceLocation, boolean lineNumberMatters) { 
    BufferedReader reader = null; 
    BufferedReader referenceReader = null; 
    List<String> expectedLines = new ArrayList<String>(); 
    try { 
     referenceReader = new BufferedReader(new InputStreamReader(FileLocator.openStream(Activator.getDefault().getBundle(), new Path("data/regression/" + referenceLocation), false))); //$NON-NLS-1$ 
     expectedLines = getLinesFromReader(referenceReader); 
    } catch (Exception e) { 
     assertFalse("Exception occured during reading reference data: " + e, true); //$NON-NLS-1$ 
    } 
    List<String>foundLines = new ArrayList<String>(); 
    try { 
     reader = new BufferedReader(new FileReader(newFile)); 
     foundLines = getLinesFromReader(reader); 
    } catch (Exception e) { 
     assertFalse("Exception occured during reading file: " + e, true); //$NON-NLS-1$ 
    } 
    boolean throwException = expectedLines.size() != foundLines.size(); 
    if (throwException) { 
     StringBuffer buffer = new StringBuffer("\n" + newFile.toString()); //$NON-NLS-1$ 
     for (String line: foundLines) 
      buffer.append(line + "\n"); //$NON-NLS-1$ 
     assertEquals("The number of lines in the reference(" + referenceLocation + ") and new output(" + newFile.getAbsolutePath()+ ") did not match!" + buffer, expectedLines.size(), foundLines.size()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
    } 
    if (!lineNumberMatters) { 
     Collections.sort(expectedLines); 
     Collections.sort(foundLines); 
    } 
    /** Either the line matches character by character or it matches regex-wise, in that order */ 
    for (int i=0;i<expectedLines.size(); i++) 
     assertTrue("Found errors in file (" + newFile + ")! " + foundLines.get(i) + " vs. " + expectedLines.get(i), foundLines.get(i).equals(expectedLines.get(i)) || foundLines.get(i).matches(expectedLines.get(i))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
} 
0

Hudson soutient directement JUnit. Sur la page de configuration de votre travail, vers la fin, devrait être une option pour "Publier le rapport de résultats de test JUnit".

Je ne suis pas très familier avec JUnit lui-même, mais je suppose qu'il produit (ou a la capacité de produire) et de mettre les résultats dans un fichier xml. Vous avez juste besoin de mettre le chemin du fichier xml (relatif à l'espace de travail) dans la zone de texte. Une fois que vous faites cela, et créez une construction, vous aurez un rapport détaillé sur la page de votre projet. Vous devriez alors être capable de cliquer sur votre chemin à travers les résultats pour chaque test.

alt text

Questions connexes