>

TestNG 제품군에 사용자 정의 리포터를 사용하고 있습니다. 온라인 자습서에서 기본 코드를 빌려서 약간 조정했습니다. 그러나 기본 제공 보고서와 같은 방식으로 실패한 테스트에 대한 스택 추적을 포함하고 싶습니다 (emailable-report.html). 이 보고서에 표시된 내용을 내 하단에 추가하면됩니다.

어떻게 이걸 달성 할 수 있는지에 대한 조언을 줄 수 있습니까? 스택 추적에 액세스하는 방법을 모르겠습니다.

이것은 generateReport 메소드입니다 (더 많이 보여줄 수는 있지만 관련이 없을 수도 있습니다) :

@Override
    public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
        try {
            // Get content data in TestNG report template file.
            String customReportTemplateStr = this.readEmailableReportTemplate();
            // Create custom report title.
            String customReportTitle = this.getCustomReportTitle(Base.Client + " Regression Suite Report");
            // Create test suite summary data.
            String customSuiteSummary = this.getTestSuiteSummary(suites);
            // Create test methods summary data.
            String customTestMethodSummary = this.getTestMethodSummary(suites);
            // Replace report title place holder with custom title.
            customReportTemplateStr = customReportTemplateStr.replaceAll("\\$TestNG_Custom_Report_Title\\$",
                    customReportTitle);
            // Replace test suite place holder with custom test suite summary.
            customReportTemplateStr = customReportTemplateStr.replaceAll("\\$Test_Case_Summary\\$", customSuiteSummary);
            // Replace test methods place holder with custom test method summary.
            customReportTemplateStr = customReportTemplateStr.replaceAll("\\$Test_Case_Detail\\$",
                    customTestMethodSummary);
            // Write replaced test report content to custom-emailable-report.html.
            File targetFile = new File(outputDirectory + "/custom-emailable-report.html");
            FileWriter fw = new FileWriter(targetFile);
            fw.write(customReportTemplateStr);
            fw.flush();
            fw.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

... 이것은 html 템플릿입니다 :

<body>
    <table>
      <tr><center><font size="5" face="verdana">
        <b>$TestNG_Custom_Report_Title$</b>
      </font></center></tr>
      <p></p>
      <thead>
        <tr>
          <th># Total Method</th>
          <th># Passed</th>
          <th># Skipped</th>
          <th># Failed</th>
          <th>Start Time</th>
          <th>End Time</th>
          <th>Execute Time (hh:mm:ss)</th>
        </tr>
       </thead> 
       $Test_Case_Summary$
    </table>
    <table id="summary">
      <thead>
        <tr>
          <th>Class</th>
          <th>Method</th>
          <th>Start Time</th>
          <th>Execution Time (hh:mm:ss)</th>
          <th>Browser</th>
          <th>Screenshot</th>
        </tr>
      </thead> 
      $Test_Case_Detail$
    </table>
  </body>


  • 답변 # 1

    import org.testng.internal.Utils;
    private void generateResult(ITestResult ans){
        ITestResult ans;
        List<String> msgs = Reporter.getOutput(ans);
        Throwable exception = ans.getThrowable();
        boolean hasThrowable = exception != null;
        if (hasThrowable) {
           String stackTraceMsg = Utils.stackTrace(exception, true)[0];
        }
    }
    
    

관련 자료

  • 이전 visual studio code - 터미널 (주로 GIT)에 특정 단어를 쓰려면 어떻게해야합니까?
  • 다음 reactjs - 상태를 잃어버린 게으른로드 된 구성 요소 반응