1、指定test classjava
Test class FirstTestapache
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("test one"); //若是變量name有值則打印傳入的name值,若是沒有則打印默認值zhangsan System.out.println(name); } }
執行testng的class:TestngRunui
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) { //新建一個XmlSuite對象 XmlSuite xmlSuite = new XmlSuite(); //指定xmlsuite 名稱 xmlSuite.setName("xml test suite"); //指定name 參數值 Map<String,String> parameters = new HashMap<>(); parameters.put("name", "lisi"); //xmlsuite添加parameters xmlSuite.setParameters(parameters); //新建一個XmlTest對象 XmlTest xmlTest = new XmlTest(xmlSuite); //設置xmltest 名稱 xmlTest.setName("xml test"); //新建xmlclass 對象 List<XmlClass> classes = new 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(); } }
打印結果:spa
test one
lisicode
2、指定xml文件xml
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.javablog
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 String xmlName = "testng.xml"; 17 //讀取文件到流 18 InputStream inputStream = TestngRun.class.getClassLoader().getResourceAsStream(xmlName); 19 //新建一個文件對象 20 File xmlFile = new File("name.xml"); 21 //拷貝流的內容到新文件中 22 FileUtils.copyInputStreamToFile(inputStream,xmlFile); 23 TestNG testNG = new TestNG(); 24 List<String> suites = new ArrayList<>(); 25 //添加文件到suite 26 suites.add(xmlFile.getAbsolutePath()); 27 testNG.setTestSuites(suites); 28 testNG.run(); 29 } 30 catch (IOException e) { 31 e.printStackTrace(); 32 } 33 } 34 35 }
執行結果:get
test one
zhangsaninput
打印了默認的name:zhangsan,那使用xml方式執行的時候如何傳入參數呢
3、執行xml文件以及自定義傳參
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 }
執行結果:
test one
wangwu
固然也能夠自定義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 @Parameters({"name"}) 12 public void test_two(@Optional("mike") String name){ 13 System.out.println("test two"); 14 //若是變量name有值則打印傳入的name值,若是沒有則打印默認值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 }
運行結果:
test onewangwutest twowangwu