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