Package org.jtester.core.testng.report

Source Code of org.jtester.core.testng.report.ReportPrinter

package org.jtester.core.testng.report;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

import org.jtester.core.testng.UserTestReporter.Status;
import org.jtester.utility.JTesterLogger;
import org.jtester.utility.ResourceHelper;

/**
* ReportPrinter
*
* @author zili.dengzl
* @author darui.wudr
*
* @2010.12.28
*/
public class ReportPrinter {

  public static void printHtmlReport(final Map<String, UserGroupDto> userGroups, final List<MethodTestDto> methods) {
    try {
      File htmlFile = getHtmlReportFile();
      FileWriter writer = new FileWriter(htmlFile);
      writer.write(genHead());
      writer.write("\n");
      writer.write("<body>\n");
      writer.write(genFirstPart(userGroups));
      writer.write("\n");
      writer.write("\n");
      writer.write(genSecondPart(methods));
      writer.write("</body>\n");
      writer.write("</html>");
      writer.close();
    } catch (Throwable e) {
      JTesterLogger.warn("print user group report error:" + e.getMessage());
    }
  }

  private static File getHtmlReportFile() {
    File htmlFile = new File(System.getProperty("user.dir") + "/target/UserTestMethods.html");
    ResourceHelper.mkFileParentDir(htmlFile);
    return htmlFile;
  }

  /**
   * 生成测试报表的第一部分<br>
   * 格式<br>
   * |user name|success count|failure count|skipped count| <br>
   *
   * @param userGroups
   * @return
   */
  private static String genFirstPart(final Map<String, UserGroupDto> userGroups) {
    StringBuffer buff = new StringBuffer();

    buff.append("<table>\n<tr><td colspan='5'>user test case statistics</td></tr>\n");
    buff.append("<tr><td>group name</td><td>success count</td><td>failure count</td><td>skipped count</td><td>total</td></tr>\n");

    for (UserGroupDto dto : userGroups.values()) {
      buff.append("<tr><td style='text-align:left;'>").append(dto.getGroupName()).append("</td>");
      buff.append("<td class='green'>").append(dto.getSuccess()).append("</td>");
      buff.append("<td class='red'>").append(dto.getFailure()).append("</td>");
      buff.append("<td class='gray'>").append(dto.getSkipped()).append("</td>");
      buff.append("<td>").append(dto.getTotal()).append("</td>");

      buff.append("</tr>\n");
    }

    buff.append("</table>\n");
    return buff.toString();
  }

  /**
   * @param sb
   * @return
   */
  private static String genSecondPart(final List<MethodTestDto> methods) {
    StringBuffer buff = new StringBuffer();

    buff.append("<table><tr><td colspan=4>test case running sequence</td></tr>\n");
    buff.append("<tr><td>method name</td><td>test status</td><td>time cost</td><td>groups</td></tr>\n");

    for (MethodTestDto method : methods) {
      buff.append("<tr>");
      buff.append("<td style='text-align:left;'>");
      buff.append(method.getMethodName());
      buff.append("<br/>");
      buff.append(method.getClazzName());
      buff.append("</td>");
      Status status = method.getStatus();
      buff.append(String.format("<td class='%s'>%s</td>", status.css(), status.name()));
      buff.append(String.format("<td class='%s'>%d ms</td>", method.getSpeedCss(), method.getDuration()));
      buff.append("<td style='text-align:left;'>").append(method.getGroups()).append("</td>");
      buff.append("</tr>\n");
    }

    buff.append("</table>\n");

    return buff.toString();
  }

  private static String genHead() throws FileNotFoundException {
    StringBuffer buffer = new StringBuffer();
    buffer.append("<html>\n\t<head>\n");
    buffer.append(String.format("<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=%s'>\n",
        ResourceHelper.defaultFileEncoding()));
    buffer.append("<style>\n");
    InputStream is = ResourceHelper.getResourceAsStream("org/jtester/core/testng/report/report.css");
    if (is != null) {
      String style = ResourceHelper.readFromStream(is);
      buffer.append(style);
    }
    buffer.append("</style>\n</head>\n");
    return buffer.toString();
  }
}
TOP

Related Classes of org.jtester.core.testng.report.ReportPrinter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.