我正在尝试创建一个UI,它将显示项目中具有@Test注释的所有方法。这将使用户可以选择在运行时要执行的方法。
我的意图是当用户从UI中选择Method1和Method3时,代码应该使用Method1和Method3创建一个testng.xml文件,并传递该testng.xml文件以供执行。
有办法这样做吗?任何帮助都是非常感谢的。谢谢。
发布于 2016-01-14 09:05:27
是的,您可以在运行时创建TestNG。
我编写了实用程序来读取Y和N指定的所有测试用例和值,描述了如果必须运行或不运行测试用例。并且可以相应地创建测试be。您可以读取从UI中选择的值。
下面的代码可以帮助您:
public static void createTestNg() {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();
Document doc = dbBuilder.newDocument();
Element rootElement = doc.createElement("suite");
doc.appendChild(rootElement);
Attr rootNameAttribute = doc.createAttribute("name");
rootNameAttribute.setValue("Suite");
Attr rootParallelAttribute = doc.createAttribute("parallel");
rootParallelAttribute.setValue("none");
rootElement.setAttributeNode(rootNameAttribute);
rootElement.setAttributeNode(rootParallelAttribute);
Element testElement = doc.createElement("test");
rootElement.appendChild(testElement);
Attr testNameAttribute = doc.createAttribute("name");
testNameAttribute.setValue("Test1");
testElement.setAttributeNode(testNameAttribute);
Element classesElement = doc.createElement("classes");
testElement.appendChild(classesElement);
Fillo fillo = new Fillo();
Connection con = fillo.getConnection("./testCaseStatus.xls");
String query = "Select * from Sheet1";
Recordset recordSet = con.executeQuery(query);
while (recordSet.next()) {
if (recordSet.getField("Execute").equals("Y")) {
Element classElement = doc.createElement("class");
Attr classNameAttribute = doc.createAttribute("name");
classNameAttribute.setValue(recordSet.getField("TestCase"));
classElement.setAttributeNode(classNameAttribute);
classesElement.appendChild(classElement);
}
}
recordSet.close();
con.close();
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("./testNg.xml"));
transformer.transform(source, result);
// Output to console for testing
StreamResult consoleResult = new StreamResult(System.out);
transformer.transform(source, consoleResult);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FilloException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}我用fillo.jar从excel中读取。您可以根据需要使用任何其他实用程序。
发布于 2016-01-14 08:52:33
testng.xml不是强制性的。
您可以有自己的IMethodInterceptor实现,在这里您将启动GUI,然后过滤所需的方法。
https://stackoverflow.com/questions/34784066
复制相似问题