美文网首页
SelfDefineReport-ReportWriter

SelfDefineReport-ReportWriter

作者: 许你一枝花 | 来源:发表于2019-05-25 14:24 被阅读0次
    package xu.zhi.hua.report;
    
    import xu.zhi.hua.testTestNg.annotation.Author;
    import xu.zhi.hua.testTestNg.annotation.Category;
    import xu.zhi.hua.testTestNg.annotation.XmlDataFactory;
    import org.apache.commons.io.FileUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.testng.ITestResult;
    import org.testng.annotations.Test;
    
    import java.io.File;
    import java.io.IOException;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Map;
    
    public class ReportWriter {
    
        private static final Logger logger = LoggerFactory.getLogger(ReportWriter.class);
    
        public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss SSS";
        public static final String OLD_DIR_CHILD="yyyy-MM-dd-HH-mm-ss-SSS";
        public static final String OLD_REPORT_DIR = "old-al-reporter";
        public static final String REPORT_DIR = "al-reporter";
    
        public void generateOldDirectory(String outputDirectory) {
            try {
                String oldPath=outputDirectory+ File.separator + OLD_REPORT_DIR;
                File dir=new File(oldPath);
                if(!dir.exists()){
                    dir.mkdirs();
                }
                DateFormat df = new SimpleDateFormat(OLD_DIR_CHILD);
                Date nowDate=new Date();
                File oldReporterDirectory=new File(outputDirectory+File.separator + OLD_REPORT_DIR
                        +File.separator+df.format(nowDate));
    
                if (oldReporterDirectory.exists()) {
                    //删除
                    FileUtils.forceDelete(oldReporterDirectory);
                }
                FileUtils.copyDirectory(new File(outputDirectory + File.separator+REPORT_DIR), oldReporterDirectory);
            } catch (IOException e) {
                logger.warn("", e);
            }
        }
    
        public String getExceptionTrace(ITestResult testResult) {
            Throwable exception = testResult.getThrowable();
            StringBuilder message = new StringBuilder(exception.getClass()
                    .getName());
            message.append(":");
            message.append(exception.getMessage());
    
            System.out.println("testResult.getTestClass().getName()------------>:"+testResult.getTestClass().getName());
            System.out.println("testResult.getMethod().getMethodName()------------>:"+testResult.getMethod().getMethodName());
            System.out.println("exception.getCause()------------>:"+exception.getCause());
            System.out.println("exception.getMessage()------------>:"+exception.getMessage());
            System.out.println("exception.getStackTrace()------------>:"+exception.getStackTrace());
            System.out.println("exception.toString()------------>:"+exception.toString());
    
            StackTraceElement[] traces = exception.getStackTrace();
            for (StackTraceElement trace : traces) {
                message.append(String.format("\n\tat %s(%s:%d)",
                        trace.getClassName(), trace.getFileName(),
                        trace.getLineNumber()));
            }
            return message.toString();
        }
    
        public String getParameters(ITestResult result){
            Class<?>[] arrayClass=result.getMethod().getMethod().getParameterTypes();
            //logger.info("ParameterTypes"+arrayClass.length);
            //logger.info("ParameterTypes"+arrayClass[0].getName());
            Object[] parameters=result.getParameters();
            if (arrayClass.length==1){
                Map<String, String> map=(Map<String, String>) parameters[0];
                return map.toString();
            }else {
                return "";
            }
        }
    
        public String getDescFromParameter(ITestResult result){
            String desc="";
            Class<?>[] arrayClass=result.getMethod().getMethod().getParameterTypes();
            //logger.info("ParameterTypes"+arrayClass.length);
            //logger.info("ParameterTypes"+arrayClass[0].getName());
            Object[] parameters=result.getParameters();
            if (arrayClass.length==1){
                Map<String, String> map=(Map<String, String>) parameters[0];
                if (map.containsKey("description")){
                    desc=map.get("description");
                }
                return desc;
            }
            return desc;
        }
    
    
        /**
         * 获取Desc信息(当Test的Description信息没有定义时使用)
         * @param result
         * @return
         */
    //    public String getNameFromXmlDataFactoryAnnotation(ITestResult result)
    //    {
    //        String name = "";
    //        XmlDataFactory xmlDataFactory = result.getMethod().getMethod().getAnnotation(XmlDataFactory.class);
    //        if(xmlDataFactory != null)
    //        {
    //            name = xmlDataFactory.name();
    //            return name;
    //        }
    //        return name;
    //    }
    
        /**
         * 获取Test的Description信息
         * @param result
         * @return
         */
    //    public String getDescFromTestAnnotation(ITestResult result)
    //    {
    //        String desc = "";
    //        Test methodTest = result.getMethod().getMethod().getAnnotation(Test.class);
    //        if(methodTest != null)
    //        {
    //            desc = methodTest.description();
    //            if (desc.isEmpty()){
    //                desc = getNameFromXmlDataFactoryAnnotation(result);
    //            }
    //            return desc;
    //        }
    //        return desc;
    //    }
    
        /**
         * 获取Category的name信息
         * @param result
         * @return
         */
        public String getNameFromCategoryAnnotation(ITestResult result)
        {
            String category = "";
            Category methodCategory = result.getMethod().getMethod().getAnnotation(Category.class);
            if(methodCategory != null)
            {
                category = methodCategory.name();
                return category;
            }
            return category;
        }
    
        /**
         * 获取Author的name信息
         * @param result
         * @return
         */
        public String getNameFromAuthorAnnotation(ITestResult result)
        {
            String author = "";
            Author methodAuthor = result.getMethod().getMethod().getAnnotation(Author.class);
            if(methodAuthor != null)
            {
                author = methodAuthor.name();
                return author;
            }
            return author;
        }
    
    
    }
    
    

    相关文章

      网友评论

          本文标题:SelfDefineReport-ReportWriter

          本文链接:https://www.haomeiwen.com/subject/ucaazqtx.html