根据测试用例的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));
}
相关文章推荐
- 根据测试用例的java源码自动生成TestNG的XML文件
- 根据测试用例的java源码自动生成TestNG的XML文件
- 利用python操作android的xml资源文件,让其按照中文自动生成对应中文首字母加起来的名字,并且根据中文在java类里面替代对应的中文
- 使用Hibernate-tools中的hbm2java和hbm2ddl根据hbm文件自动生成pojo和数据库脚本
- Android 导入android源码有错,R.java文件不能自动生成解决方法
- eclipse中的Java文件自动根据svn版本号生成注释
- 根据XML文件批量生成java类——freemarker
- 使用Hibernate-tools中的hbm2java和hbm2ddl根据hbm文件自动生成pojo和数据库脚本
- 导入android源码有错,R.java文件不能自动生成解决方法
- 根据当前文件夹下所有文件随机自动生成训练和测试样本列表
- 类似Lazy Android的插件,根据layout的xml文件自动生成findViewById代码
- java生成XML文件自动换行问题
- eclipse中的Java文件自动根据svn版本号生成注释
- 使用Hibernate-tools中的hbm2java和hbm2ddl根据hbm文件自动生成pojo和数据库脚本
- 使用Hibernate-tools中的hbm2java和hbm2ddl根据hbm文件自动生成pojo和数据库脚本
- jquery 左侧多级菜单 根据xml文件自动生成
- Ant中批量调用TestNG的XML文件,并调用TestNgXlst生成漂亮的html测试报告
- eclipse中的Java文件自动根据svn版本号生成注释
- Android 导入android源码有错,R.java文件不能自动生成解决方法
- SEO_ASP.net SEO优化(包含URL地址重写\viewState移动和压缩至服务器\SEO信息XML生成_根据URL地址重写文件)\web网站内容压缩 源码公开.本人授权可使用于商业项目。