java获取并编辑用户脚本,创建并自动执行testng.xml文件_03
package demo0325;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.testng.TestNG;
public class startAll {
public static void main(String[] args) throws IOException {
/*变量说明
*zipFileDir 用户上传的zip包目录
*projectDir 运行最终可执行脚本的所在目录
*packageContent 需要提交到用户上传脚本里面的首行package内容
*/
String zipFileDir="D:\\Android\\jars";
String projectDir="D:\\Android\\workspace\\MqcDemo\\src\\demo0325\\";
String packageContent="package demo0325;";
String projectSrcDir="demo0325";
//在工程目录demo0325生成所有用户可执行的脚本
try{
addScript.main(zipFileDir,projectDir,packageContent);
System.out.println("所有用户脚本已生成");
}catch(Exception e){
System.out.println("可执行脚本生成失败");
}
//获取所有新生成的用户可执行脚本名称
String[] scriptNames=addScript.getUserScriptNames();
//获取xml文件里面要执行的class类name属性值
String[] xmlClassSZ=new String[scriptNames.length];
for(int i=0;i<scriptNames.length;i++){
String scriptName=scriptNames[i].toString().substring(0,scriptNames[i].length()-5);
xmlClassSZ[i]=projectSrcDir+"."+scriptName;
System.out.println(scriptName);
}
//创建testng.xml文件
CreateTestngXml(xmlClassSZ);
//启动运行testng.xml文件
RunTestngXml();
}
//创建testng.xml文件
public static void CreateTestngXml(String[] xmlClass) throws IOException{
//创建Document实例
Document document = DocumentHelper.createDocument();
//记录要保存的xml文件位置
String xmlfilepath=System.getProperty("user.dir")+"\\testng.xml";
//创建根节点suite,并设置name属性为xmlsuitename
Element root = document.addElement( "suite" ).addAttribute("name", "exeAppiumTestCase");
//创建节点test,并设置name、属性
Element test = root.addElement( "test" ).addAttribute("name", "test");
//创建节点classes,无属性
Element classes = test.addElement( "classes" );
//创建节点classs,并设置name属性
for(int i=0;i<xmlClass.length;i++){
Element classs= classes.addElement( "class" ).addAttribute("name",xmlClass[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;
}
//运行testng.xml文件
public static void RunTestngXml(){
TestNG testNG = new TestNG();
List<String> suites = new ArrayList<String>();
suites.add(System.getProperty("user.dir")+"\\testng.xml");
testNG.setTestSuites(suites);
testNG.run();
}
}