我正在尝试创建一个UI,它将显示项目中具有@Test注释的所有方法。这将为用户提供选择在运行时期间要执行的方法的选项。
我的意图是当用户从UI中选择让我们说出Method1和Method3时,代码应该使用Method1和Method3创建一个testng.xml文件并传递该xml文件以供执行。
有没有办法做到这一点?任何帮助深表感谢。感谢。
答案 0 :(得分:1)
是的,您可以在运行时创建TestNG。
我已经编写了实用程序来读取所有测试用例和Y和N指定的值,描述了如果必须运行该测试用例。并且可以相应地创建testng。您可以读取从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中读取。您可以根据需要使用任何其他实用程序。
答案 1 :(得分:0)
testng.xml
不是强制性的。
您可以拥有自己的IMethodInterceptor实现,然后启动GUI,然后过滤所需的方法。