2017-07-03 1 views
1

J'ai un fichier journal qui est la sortie de journal de Nunit RunnerFichier journal de filtre

Je veux analyser le fichier pour extraire les données;

Voici l'exemple du fichier journal: Log File Contents

Je veux extraire le nombre de tests, Tests et Failed

Passed

Comment utiliser Regex pour obtenir les données. J'utilise les classes Pattern et Scanner pour numériser les données.

Voici la fonction exemple j'utilise pour lire le fichier Function to Read File

MISE À JOUR:

J'ai utilisé le code suivant pour extraire les résultats de test, je voudrais avoir des suggestions sur ce code:

public int FilterLogFile(File LogFile) { 
    int TestCount = 0; 
    try { 


     String Line = ""; 
     BufferedReader br = new BufferedReader(new FileReader(LogFile)); 
     while ((Line = br.readLine()) != null) { 
      Scanner scanner = new Scanner(Line); 
      String line = scanner.findInLine(".*(Test Count:)\\s+\\d+\\D+\\s+.*(Passed:)\\s+\\d+\\D+\\s+.*(Failed:)\\s+\\d+"); 
      if (line != null) { 
       System.out.println("Detected Line: " + line); 
       TestCount = ExtractData(Line); 
       break; 
      } else { 
       continue; 
      } 
     } 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

    return TestCount; 
} 

private int ExtractData(String strLine) { 
    int Count = 0; 
    try { 

     String[] Data = strLine.split(","); 
     for (String str : Data) { 
      if (str.contains("Test Count:")) { 
       int value = Integer.parseInt(str.replaceAll("[^0-9]", "")); 
       Count = value; 
       System.out.println(value); 
       break; 
      } 
     } 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
    return Count; 
} 

Sample Log Je travaille est:

Log File Contents

+0

au lieu d'images affichage de texte que vous pouvez afficher le texte à la place (il y a des balises pour code etc.). Aussi, qu'avez-vous essayé jusqu'à présent? Comment essayeriez-vous d'extraire les données? Et que savez-vous déjà des expressions régulières? (Si vous ne savez pas grand-chose, je vous suggérerais d'abord d'utiliser un didacticiel et d'essayer quelque chose vous-même). – Thomas

+0

Je recommande à la place d'analyser ces informations à partir du fichier de résultats XML que NUnit produit. La sortie du journal peut changer dans les futures versions de NUnit. – Chris

Répondre

0

J'espère que cela utile pour vous,

utiliser,

a = "[test run server,overall result: Failed, Test count:09, Passed: 14, Failed: 1, skipped: 16, start: 1, end: 10, asd: asd,akdsu]" 

/Test.+.(?:Failed:.\d+)/ 

Regex: /Test.+.(?:Failed:.\d+)/