Как посчитать результаты PASS / FAIL и вывести количество пропусков и неудач - PullRequest
0 голосов
/ 23 апреля 2019

Как я могу посчитать и распечатать количество тестов FAIL и PASS в последнем столбце моего файла журнала

boolean globalRet = true;

for (boolean anArrRet : arrRet) {
    if (!anArrRet) {
        globalRet = false; 
        break;
    }
}

if (globalRet) {
    logLine += cnd.getLineLastAll() + "PASS,NA\n";
} else {
    logLine += cnd.getLineLastAll() + "FAIL,";

    for (int i = 0; i < arrRet.length; i++) {
        if (!arrRet[i]) {
            logLine += arrCondition[i] + "&";
        }
    } 

    logLine += "\n";
}

Файл данных, который я использую, выглядит как

CO2, Conditions
2.0, CEC_P=NA & CPH_P=NA & C_P=NA & H_P=NA 
5.5, CNA=NA 

Здесь мой файл журнала выглядит так, как вы можете видеть во 2-й строке 2 условия были выполнены, а 2 не пройдены, но я не печатаю переданные условия в файл журнала

 CO2,  Result, Reason
  2.0   FAIL,   CEC_P=NA & CPH_P=NA
  5.5   PASS,   NA

Таким образом, это может быть не единственной причиной, по которой он потерпел неудачу, и причинами, разделенными на &

Теперь то, что я хочу получить в моем лог-файле, должно выглядеть так

CO2,  Result, Reason               Passed, Failed
2.0   FAIL,   CEC_P=NA & CPH_P=NA  2,      2
5.5   PASS,   NA                   1,      0

1 Ответ

0 голосов
/ 23 апреля 2019

если вы работаете в системе Unix, приведенная ниже команда может сделать то, что вам нужно (за исключением кода Java, если предположить, что строки PASS / FAIL находятся в последнем столбце вашего файла журнала):

awk '{print $NF}' your_log_file | sort | uniq -c

примервыходные данные:

  2 FAIL
  5 PASS

В качестве альтернативы приведенный ниже простой Java-код может считывать ваш файл построчно и подсчитывать вхождения строк "FAIL" или "PASS" в каждой строке и печатать результаты:

BufferedReader reader;
int fail = 0;
int pass = 0;            
try {
    reader = new BufferedReader(new FileReader(
          "path\\to\\your\\log_file"));
    String line = reader.readLine();
    while (line != null) {
         if (line.contains("FAIL")) fail++;
         if (line.contains("PASS")) pass++;
         line = reader.readLine();
    }
    reader.close();
} catch (IOException e) {e.printStackTrace();}                
System.out.println("Number of PASS in file : " + pass);
System.out.println("Number of FAIL in file : " + fail);   
...