Testng code execution in several ways

First, specify the test class

Test class FirstTest

package cas.eric;


import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class FirstTest {
    @Test
    @Parameters({"name"})
    public void test_one(@Optional("zhangsan") String name){
        System.out.println ( "the Test One" );
         // If the variable name has the value passed name value is printed, if not then printing defaults zhangsan 
        System.out.println (name);
    }
}

 

 

class execution of testng: TestngRun

package cas.eric;


import org.testng.TestNG;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TestngRun {

    public  static  void main (String [] args) {
         // Create a XmlSuite objects 
        XmlSuite xmlSuite = new new XmlSuite ();
         // the specified name xmlsuite 
        xmlSuite.setName ( "XML Test Suite" );
         // name parameter specified value 
        Map <String , String> Parameters = new new the HashMap <> ();
        parameters.put ( "name", "Lisi" );
         // xmlsuite added Parameters 
        xmlSuite.setParameters (Parameters);
         // Create a XMLTest objects 
        XMLTest XMLTest = new new XMLTest (xmlSuite);
         // Set the name xmltest 
        xmlTest.setName ( " Test XML " );
         // Create Object xmlclass 
        List <xmlClass> classes = new new the ArrayList <> ();
        String packageName = TestngRun.class.getPackage().getName();
        classes.add(new XmlClass(packageName+".FirstTest"));
        xmlTest.setXmlClasses(classes);
        List<XmlSuite> suites = new ArrayList<>();
        suites.add(xmlSuite);
        TestNG testNG = new TestNG();
        testNG.setXmlSuites(suites);
        testNG.run();
    }

}

 

Print Results:

test one
lisi

Second, specify xml file

testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
    <test verbose="2" preserve-order="true" name="test">
        <classes>
            <class name="cas.eric.FirstTest"></class>
        </classes>
    </test>
</suite>

 

TestngRun.java

 1 package cas.eric;
 2 
 3 
 4 import org.apache.commons.io.FileUtils;
 5 import org.testng.TestNG;
 6 import java.io.File;
 7 import java.io.IOException;
 8 import java.io.InputStream;
 9 import java.util.ArrayList;
10 import java.util.List;
11 
12 public class TestngRun {
13 
14     public static void main(String[] args) {
15         try {
16             XMLName = String "the testng.xml" ;
 . 17              // read the file to the stream 
18 is              the InputStream inputStream = TestngRun. Class .getClassLoader () the getResourceAsStream (XMLName);.
 . 19              // Create a file object 
20 is              File xmlFile = new new File ( "name .xml " );
 21 is              // copy the contents to a new stream file 
22 is              FileUtils.copyInputStreamToFile (inputStream, xmlFile);
 23 is              TestNG TestNG = new new TestNG ();
 24              List <String> Suites = new new the ArrayList <> ();
 25              //Add files to Suite 
26 is              suites.add (xmlFile.getAbsolutePath ());
 27              testNG.setTestSuites (Suites);
 28              testNG.run ();
 29          }
 30          the catch (IOException E) {
 31 is              e.printStackTrace ();
 32          }
 33 is      }
 34 is  
35 }

 

Results of the:

test one
zhangsan

Print the default name: zhangsan, that use the xml way how to perform when it passed parameter

 

Third, the implementation of a custom xml file and parameter passing

TestngRun.java

 

 1 package cas.eric;
 2 
 3 
 4 
 5 import org.testng.TestNG;
 6 import org.testng.xml.SuiteXmlParser;
 7 import org.testng.xml.XmlSuite;
 8 import java.io.InputStream;
 9 import java.util.ArrayList;
10 import java.util.HashMap;
11 import java.util.List;
12 import java.util.Map;
13 
14 public class TestngRun {
15 
16     public static void main(String[] args) {
17         String xmlName = "testng.xml";
18         InputStream inputStream = TestngRun.class.getClassLoader().getResourceAsStream(xmlName);
19         TestNG testNG = new TestNG();
20         SuiteXmlParser suiteXmlParser = new SuiteXmlParser();
21         List<XmlSuite> suites = new ArrayList<>();
22         XmlSuite xmlSuite = suiteXmlParser.parse(xmlName, inputStream, true);
23         suites.add(xmlSuite);
24         Map<String,String> parameters = new HashMap<>();
25         parameters.put("name", "wangwu");
26         xmlSuite.setParameters(parameters);
27         testNG.setXmlSuites(suites);
28         testNG.run();
29         
30     }
31 
32 }

 

Results of the:

test one
wangwu

 

Of course, you can customize the test class

SecondTest.java

. 1  Package cas.eric;
 2  
. 3  
. 4  Import org.testng.annotations.Optional;
 . 5  Import org.testng.annotations.Parameters;
 . 6  Import org.testng.annotations.Test;
 . 7  
. 8  public  class SecondTest {
 . 9  
10      @Test
 . 11      @ the Parameters ({ "name" })
 12 is      public  void test_two (@optional ( "Mike" ) String name) {
 13 is          System.out.println ( "TWO Test" );
 14          // if the variable name is printed has the value passed name value, if not then printing defaults zhangsan 
15         System.out.println(name);
16     }
17 }

 

TestngRun.java

 1 package cas.eric;
 2 
 3 
 4 
 5 import org.testng.TestNG;
 6 import org.testng.xml.SuiteXmlParser;
 7 import org.testng.xml.XmlClass;
 8 import org.testng.xml.XmlSuite;
 9 import org.testng.xml.XmlTest;
10 
11 import java.io.InputStream;
12 import java.util.ArrayList;
13 import java.util.HashMap;
14 import java.util.List;
15 import java.util.Map;
16 
17 public class TestngRun {
18 
19     public static void main(String[] args) {
20         String xmlName = "testng.xml";
21         InputStream inputStream = TestngRun.class.getClassLoader().getResourceAsStream(xmlName);
22         TestNG testNG = new TestNG();
23         SuiteXmlParser suiteXmlParser = new SuiteXmlParser();
24         List<XmlSuite> suites = new ArrayList<>();
25         XmlSuite xmlSuite = suiteXmlParser.parse(xmlName, inputStream, true);
26         List<XmlTest> xmlTestList = xmlSuite.getTests();
27         XmlTest xmlTest = xmlTestList.get(0);
28         List<XmlClass> xmlClassList = xmlTest.getXmlClasses();
29         String packageName = TestngRun.class.getPackage().getName();
30         XmlClass xmlClass = new XmlClass(packageName+".SecondTest");
31         xmlClassList.add(xmlClass);
32         suites.add(xmlSuite);
33         Map<String,String> parameters = new HashMap<>();
34         parameters.put("name", "wangwu");
35         xmlSuite.setParameters(parameters);
36         testNG.setXmlSuites(suites);
37         testNG.run();
38 
39     }
40 
41 }

 

operation result:

test one
wangwu
test two
wangwu

 

Guess you like

Origin www.cnblogs.com/Eric-zhao/p/11068655.html