2017-07-03 188 views
1

我有一个日志文件,它是Nunit Runner的日志输出筛选日志文件

我想通过解析文件来提取数据;

下面是示例日志文件: Log File Contents

我想提取测试计数,通过和失败的测试

如何使用正则表达式来获取数据。

我使用模式和扫描仪类来扫描数据。

这里是我用来读取文件 Function to Read File

更新示例功能:

我已经用下面的代码中提取测试结果,我想对这个代码的建议:

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; 
} 

样本记录我的工作是:

Log File Contents

+0

发布文字图像的相反,你可能要发布文字代替(有标记代码等)。另外,你到目前为止做了什么?你会如何尝试提取数据?你对正则表达式有什么了解? (如果你不太了解,我建议你先拿一些关于这些的教程,然后自己尝试一下)。 – Thomas

+0

我建议您从NUnit生成的xml结果文件中解析这些信息。日志输出在未来的NUnit版本中可能会更改。 – Chris

回答

0

我希望这有助于你,

利用这一点,

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+)/ 

正则表达式:为/Test.+.(?:Failed:.\d+)/