好比下面這個類,要調用whoami則必須寫一個main函數,而後在main函數中調用該函數,並傳入參數,使用TestNG的@Parameters參數則不須要這麼作。java
package ngtest; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class Student { @Parameters({"name","age"})//表示該函數使用的參數由testng.xml提供,第一個參數是xml中的name參數,第二個是age參數 @Test public void whoami(String name,String age){ System.out.println("I am "+name+","+age+" years old."); } }
testng.xml配置以下函數
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite"> <parameter name="name" value="Mike"></parameter> <!--參數name的值是Mike--> <parameter name="age" value="18"></parameter> <!--參數age的值是18--> <test name="Test"> <classes> <class name="ngtest.Student"/> </classes> </test> </suite>
運行該testng.xml就會把name和age的值代入到函數的參數列表中,而後執行該函數。輸出結果:測試
[TestNG] Running: D:\workspace\tester\testng.xml I am Mike,18 years old =============================================== Suite Total tests run: 1, Failures: 0, Skips: 0 ===============================================
public class TestNg3 { @Parameters({"parm1"}) @Test public void Test(@Optional("沒有參數只能用我了") String a){ //若是在testng.xml中沒有找到param1參數,則會給a賦值「沒有參數只能用我了」 System.out.println(a); }//打印 沒有參數只能用我了 }
testng.xml文件中的參數是有做用範圍的,下面的param1在全局範圍內都是hahahaha,可是在一個Test內是oooo,這種狀況特別適用於在全局範圍內某個值是固定的,可是在某個特殊狀況下須要改變它的值的狀況ui
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="My test suite"> <parameter name="parm1" value="hahahaha"/> <test name="First Test"> <parameter name="parm1" value="oooooooo"/> <classes> <class name="com.cangqiong.test.TestNg3"/> </classes> </test> </suite>