首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们可以动态创建testng.xml文件吗?

我们可以动态创建testng.xml文件吗?
EN

Stack Overflow用户
提问于 2016-01-14 07:43:23
回答 2查看 1.4K关注 0票数 0

我正在尝试创建一个UI,它将显示项目中具有@Test注释的所有方法。这将使用户可以选择在运行时要执行的方法。

我的意图是当用户从UI中选择Method1和Method3时,代码应该使用Method1和Method3创建一个testng.xml文件,并传递该testng.xml文件以供执行。

有办法这样做吗?任何帮助都是非常感谢的。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-14 09:05:27

是的,您可以在运行时创建TestNG。

我编写了实用程序来读取Y和N指定的所有测试用例和值,描述了如果必须运行或不运行测试用例。并且可以相应地创建测试be。您可以读取从UI中选择的值。

下面的代码可以帮助您:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-01-14 08:52:33

testng.xml不是强制性的。

您可以有自己的IMethodInterceptor实现,在这里您将启动GUI,然后过滤所需的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34784066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档