<legend id='M4moJ'><style id='M4moJ'><dir id='M4moJ'><q id='M4moJ'></q></dir></style></legend>

    1. <small id='M4moJ'></small><noframes id='M4moJ'>

    2. <tfoot id='M4moJ'></tfoot>

        • <bdo id='M4moJ'></bdo><ul id='M4moJ'></ul>
      1. <i id='M4moJ'><tr id='M4moJ'><dt id='M4moJ'><q id='M4moJ'><span id='M4moJ'><b id='M4moJ'><form id='M4moJ'><ins id='M4moJ'></ins><ul id='M4moJ'></ul><sub id='M4moJ'></sub></form><legend id='M4moJ'></legend><bdo id='M4moJ'><pre id='M4moJ'><center id='M4moJ'></center></pre></bdo></b><th id='M4moJ'></th></span></q></dt></tr></i><div id='M4moJ'><tfoot id='M4moJ'></tfoot><dl id='M4moJ'><fieldset id='M4moJ'></fieldset></dl></div>

        动态 TestNG XML 创建.获取错误的 XML.我错在哪里

        时间:2023-09-30
          <tbody id='glo3S'></tbody>
          <i id='glo3S'><tr id='glo3S'><dt id='glo3S'><q id='glo3S'><span id='glo3S'><b id='glo3S'><form id='glo3S'><ins id='glo3S'></ins><ul id='glo3S'></ul><sub id='glo3S'></sub></form><legend id='glo3S'></legend><bdo id='glo3S'><pre id='glo3S'><center id='glo3S'></center></pre></bdo></b><th id='glo3S'></th></span></q></dt></tr></i><div id='glo3S'><tfoot id='glo3S'></tfoot><dl id='glo3S'><fieldset id='glo3S'></fieldset></dl></div>

          <small id='glo3S'></small><noframes id='glo3S'>

          <legend id='glo3S'><style id='glo3S'><dir id='glo3S'><q id='glo3S'></q></dir></style></legend>
        • <tfoot id='glo3S'></tfoot>

            <bdo id='glo3S'></bdo><ul id='glo3S'></ul>

                • 本文介绍了动态 TestNG XML 创建.获取错误的 XML.我错在哪里的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  动态 TestNG XML 创建.获取错误的 XML.我哪里错了.

                  Dynamic TestNG XML Creation. Getting wrong XML. Where I am wrong.

                  我希望按如下所示打印我的 testNG xml.

                  I want my testNG xml to be print as shown below.

                  <?xml version="1.0" encoding="UTF-8"?>
                  <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
                  <suite name="App Automation Testing">
                    <parameter name="BrowserName" value="chrome"/>
                    <test name="MyTest1">
                      <classes>
                        <class name="etaf.tests.LaunchApp"/>
                        <class name="etaf.tests.LoginTests"/>
                      </classes>
                    </test> <!-- MyTest1 -->
                    <test name="MyTest2">
                      <classes>
                        <class name="etaf.tests.LaunchApp"/>
                      </classes>
                    </test> <!-- MyTest2 -->
                  </suite> <!-- App Automation Testing -->
                  

                  但是使用下面的 Java 代码;这段代码有一个类似于下面显示的数组

                  But with the below Java Code; this code is having a array similar to what shown below

                  |testclass|testname|
                  |class1   |TC_LOGIN|
                  |class2   |TC_LOGIN|
                  |class1   |TC_WORK |
                  

                  public void sample(String[][] dbArr, Map<String,String> parameters ) {
                  
                          //Create an instance on TestNG
                          TestNG myTestNG = new TestNG();
                  
                          //Create an instance of XML Suite and assign a name for it.
                          XmlSuite suite = new XmlSuite();
                          suite.setName("App Automation Testing");
                          suite.setParameters(parameters);
                  
                          String dummyName = "";
                          List<XmlClass> classes1 = null;
                          List<XmlTest> tests = new ArrayList<XmlTest>();
                          XmlTest test1 = null;
                  
                  
                          for(int i=0;i<dbArr.length;i++) {
                              if(!dummyName.equalsIgnoreCase(dbArr[i][1])) {
                                  test1 = new XmlTest(suite);
                                  test1.setName(dbArr[i][1]);
                                  classes1 = new ArrayList<XmlClass> ();
                                  classes1.add(new XmlClass(dbArr[i][0]));
                                  dummyName = dbArr[i][1];
                  
                              } else if(dummyName.equalsIgnoreCase(dbArr[i][1])) {
                                  classes1.add(new XmlClass(dbArr[i][0]));
                                  dummyName = dbArr[i][1];
                              }
                              test1.setXmlClasses(classes1);
                              tests.add(test1);
                          }
                  
                          //add the list of tests to your Suite.
                          suite.setTests(tests);
                  
                          //Add the suite to the list of suites.
                          List<XmlSuite> suites = new ArrayList<XmlSuite>();
                          suites.add(suite);
                  
                          System.out.println(suite.toXml());
                  
                          //Set the list of Suites to the testNG object you created earlier.
                          myTestNG.setXmlSuites(suites);
                  
                          //invoke run() - this will run your class.
                          myTestNG.run();
                      }
                  

                  它是这样打印的.我哪里错了.?请帮忙.

                  <?xml version="1.0" encoding="UTF-8"?>
                  <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
                  <suite name="App Automation Testing">
                    <parameter name="BrowserName" value="chrome"/>
                    <test name="TC_LOGIN">
                      <classes>
                        <class name="etaf.tests.LaunchApp"/>
                        <class name="etaf.tests.LoginTests"/>
                      </classes>
                    </test> <!-- TC_LOGIN -->
                    <test name="TC_LOGIN">
                      <classes>
                        <class name="etaf.tests.LaunchApp"/>
                        <class name="etaf.tests.LoginTests"/>
                      </classes>
                    </test> <!-- TC_LOGIN -->
                    <test name="TC_WORK">
                      <classes>
                        <class name="etaf.tests.LaunchApp"/>
                      </classes>
                    </test> <!-- TC_WORK -->
                  </suite> <!-- App Automation Testing -->
                  

                  推荐答案

                  我认为问题出在您遍历 2D 数组的方式上.

                  I believe the problem lies in the way in which you are iterating through the 2D array.

                  这里更容易完成.

                  import org.testng.TestNG;
                  import org.testng.xml.XmlClass;
                  import org.testng.xml.XmlSuite;
                  import org.testng.xml.XmlTest;
                  
                  import java.util.*;
                  
                  public class TestClassExample {
                      public static void main(String[] args) {
                          String[][] data = new String[][]{
                                  {"class1", "TC_LOGIN"},
                                  {"class2", "TC_LOGIN"},
                                  {"class1", "TC_WORK"}
                          };
                          sample(transformToMap(data), Collections.emptyMap());
                      }
                  
                      private static Map<String, List<String>> transformToMap(String[][] data) {
                          Map<String, List<String>> map = new HashMap<>();
                          for (String[] aData : data) {
                              String key = aData[1];
                              List<String> classes = map.computeIfAbsent(key, k -> new ArrayList<>());
                              classes.add(aData[0]);
                          }
                          return map;
                      }
                  
                      private static void sample(Map<String, List<String>> dbArr, Map<String, String> parameters) {
                  
                          //Create an instance on TestNG
                          TestNG myTestNG = new TestNG();
                  
                          //Create an instance of XML Suite and assign a name for it.
                          XmlSuite suite = new XmlSuite();
                          suite.setName("App Automation Testing");
                          suite.setParameters(parameters);
                          dbArr.forEach((key, value) -> {
                              XmlTest xmlTest = new XmlTest(suite);
                              xmlTest.setName(key);
                              value.forEach(eachValue -> {
                                  XmlClass xmlClass = new XmlClass(eachValue, false);
                                  xmlTest.getClasses().add(xmlClass);
                              });
                          });
                  
                          //Add the suite to the list of suites.
                          List<XmlSuite> suites = new ArrayList<>();
                          suites.add(suite);
                  
                          System.out.println(suite.toXml());
                  
                          //Set the list of Suites to the testNG object you created earlier.
                          myTestNG.setXmlSuites(suites);
                      }
                  }
                  

                  输出如下:

                  objc[59296]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/java (0x102a554c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x102ae14e0). One of the two will be used. Which one is undefined.
                  <?xml version="1.0" encoding="UTF-8"?>
                  <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
                  <suite name="App Automation Testing">
                    <test thread-count="5" name="TC_WORK">
                      <classes>
                        <class name="class1"/>
                      </classes>
                    </test> <!-- TC_WORK -->
                    <test thread-count="5" name="TC_LOGIN">
                      <classes>
                        <class name="class1"/>
                        <class name="class2"/>
                      </classes>
                    </test> <!-- TC_LOGIN -->
                  </suite> <!-- App Automation Testing -->
                  
                  
                  Process finished with exit code 0
                  

                  这篇关于动态 TestNG XML 创建.获取错误的 XML.我错在哪里的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如何以编程方式使用 TestNG 运行 Selenium Java 测试 下一篇:org.openqa.selenium.ElementNotVisibleException:元素当前不可

                  相关文章

                  最新文章

                    <legend id='kvwPm'><style id='kvwPm'><dir id='kvwPm'><q id='kvwPm'></q></dir></style></legend><tfoot id='kvwPm'></tfoot>
                    • <bdo id='kvwPm'></bdo><ul id='kvwPm'></ul>
                    1. <small id='kvwPm'></small><noframes id='kvwPm'>

                      <i id='kvwPm'><tr id='kvwPm'><dt id='kvwPm'><q id='kvwPm'><span id='kvwPm'><b id='kvwPm'><form id='kvwPm'><ins id='kvwPm'></ins><ul id='kvwPm'></ul><sub id='kvwPm'></sub></form><legend id='kvwPm'></legend><bdo id='kvwPm'><pre id='kvwPm'><center id='kvwPm'></center></pre></bdo></b><th id='kvwPm'></th></span></q></dt></tr></i><div id='kvwPm'><tfoot id='kvwPm'></tfoot><dl id='kvwPm'><fieldset id='kvwPm'></fieldset></dl></div>