您的位置:首页 > 编程语言 > Java开发

根据测试用例的java源码自动生成TestNG的XML文件

2017-09-30 12:00 841 查看
 


根据测试用例的java源码自动生成TestNG的XML文件

1、读取当前项目目录下的所有.java文件,过滤出含有@Test标识的java源文件

2、读取java文件内容,解析出包名、类名、方法名。使用Vector存储,第一个元素为包名,第二个元素为类名,从第三个元素开始存储有@Test标识的方法名

3、当前项目目录下的所有含有@Test标识的.java文件,遍历读取后单个java源文件信息存储到Vector,使用ArrayList存储所有Vector对象。

4、把ArrayList中存储的信息转换成多个XML文件,并保存在指定目录下。

5、生成XML文件的部分源码如下:

[java] view
plain copy

//读取Vector中的信息,生成对应的XML文件,存储到项目目录的【/suites】目录下  

    private void  CreateXml(Vector<String> content,String filepath) throws IOException {  

          

        //创建Document实例  

        Document document = DocumentHelper.createDocument();  

          

        //记录test名称  

        String xmltestname=new String();  

  

        //记录class名称  

        String xmlclassname=new String();  

          

        //记录要保存的xml文件位置  

        String xmlfilepath=new String();  

  

          

        //获取test名称  

        xmltestname=content.get(1).toString();  

          

        //获取class名称  

        xmlclassname=content.get(0).toString()+"."+content.get(1).toString();  

          

        //获取文件保存位置  

        xmlfilepath=filepath+xmltestname+".xml";  

        //System.out.println(filepath);  

          

        //创建根节点suite,并设置name属性为xmlsuitename  

        Element root = document.addElement( "suite" )  

                .addAttribute("name", xmltestname);  

          

        //创建节点test,并设置name、verbose属性  

        Element test = root.addElement( "test" )  

                  

                //记录日志信息的详细程度,有0-10个级别,0是没有,10是最详细,对输出的测试报告无影响  

                .addAttribute("verbose", "2")  

                  

                //控制@Test标识的测试用例执行顺序,默认是false,在节点下面的所有方法的执行顺序是无序的  

                //把它设为true以后就能保证在节点下的方法是按照顺序执行的。  

                .addAttribute("preserve-order", "true")  

                .addAttribute("name", xmltestname);  

          

        //创建节点classes,无属性  

        Element classes = test.addElement( "classes" );  

                  

        //创建节点classs,并设置name属性  

        Element classs= classes.addElement( "class" )  

                .addAttribute("name", xmlclassname);  

        //创建节点methods,无属性  

        Element methods = classs.addElement( "methods" );  

                  

        //创建节点classs,并设置name属性  

        for (int i = 2; i < content.size(); i++){  

            @SuppressWarnings("unused")  

            Element include= methods.addElement( "include" )  

                    .addAttribute("name", content.get(i).toString());  

        }     

          

            //设置DocType  

            //第一个参数:名称    

            //第二个参数:PUBLIC URI  

            //第三个参数:SYSTEM URI  

            document.addDocType("suite", null,"http://testng.org/testng-1.0.dtd");  

             

            //输出格式设置  

            OutputFormat format = OutputFormat.createPrettyPrint();   

            format = OutputFormat.createCompactFormat();  

              

            //设置输出编码  

            format.setEncoding("UTF-8");  

              

              

            //创建XML文件  

            XMLWriter writer= new XMLWriter(new OutputStreamWriter(new FileOutputStream(xmlfilepath),format.getEncoding()),format);   

            writer.write( document );   

            writer.close();  

            document=null;  

              

            //记录xml文件路径  

            setxmlpath(xmlfilepath);  

    }  

  

    //读取ArrayList中的信息,批量生成对应的XML文件,存储到项目目录的【/suites】目录下  

    public void CreateAllXml(ArrayList<Vector<String>> contentall,String filepath) throws IOException {  

          

        //创建Vector  

        Vector<String> content=new Vector<String>();  

        for (int i = 0; i < contentall.size(); i++) {  

            content=contentall.get(i);  

            //根据content的信息,生成对应XML文件  

            CreateXml(content,filepath);  

        }  

          

          

          

    }  

6、生成XML文件调用执行部分源码

[java] view
plain copy

public static void main(String[] args) {  

          

        ReadJavaFile readjavafiles=new ReadJavaFile();  

        WriteTestngXml writexmlfiles=new WriteTestngXml();  

          

        String curpath =System.getProperty("user.dir");  

          

        try {  

            writexmlfiles.CreateAllXml(readjavafiles.ReadContentAll(curpath),curpath+"\\suites\\") ;  

        } catch (IOException e) {  

            System.out.println("生成XML文件失败");  

        }  

          

        System.out.println("生成的XML文件如下:");  

        for (int i = 0; i < writexmlfiles.getxmlpath().size(); i++) {  

            System.out.println(writexmlfiles.getxmlpath().get(i));  

              

        }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐