4. 參數
Junit是不帶任何參數的,不論是測試方法還是配置方法,而TestNG都是可以添加參數的,有2種方法。
(1) 使用Parameter參數
@Parameters({ "first-name" })
@Test
public void testSingleString(String firstName) {
System.out.println("Invoked testString " + firstName);
assert "Cedric".equals(firstName);
}
參數的值放到配置文件中
<suite name="My suite">
<parameter name="first-name" value="Cedric"/>
<test name="Simple example">
這種方法偶爾用之還可以,但是很遺憾的是第一只能傳String(可能可以其他的基本數據類型??但至少不能傳復雜對象),第二數據寫在配置文件中,不能所見即所得。
但是下面的方法真的給我們驚喜。
(2) DataProvider
這是從4.0以后增加的功能,看看怎么實現。
// This method will provide data to any test method that declares that its Data Provider
// is named "test1"
@DataProvider(name = "test1")
public Object[][] createData1() {
return new Object[][] {
new Object[] { "Cedric", new Integer(36) },
new Object[] { "Anne", new Integer(37)},
};
}
// This test method declares that its data should be supplied by the Data Provider
// named "test1"
@Test(dataProvider = "test1")
public void verifyData1(String n1, Integer n2) {
System.out.println(n1 + " " + n2);
}
執行的結果
Cedric 36
Anne 37
DataProvider返回的是個2維數組的對象,什么數據都可以提供了吧,而且可以讓你的測試方法執行多次。而且最重要的是和測試方法寫在一起,所見即所得。
5. Ant的集成和Daily Build
TestNG對Ant提供了很好的支持,這是我寫得測試用的Ant腳本
<project default="testng">
<property file="build.properties" />
<path id="cpath">
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</path>
//定義testng的任務
<taskdef resource="testngtasks" classpath="lib/testng-4.4-jdk15.jar" />
<target name="compile">
<mkdir dir="test/classes"/>
<javac destdir="test/classes"
srcdir="${testng.dir}"
debug="true"
encoding="GBK" >
<classpath refid="cpath"/>
</javac>
</target>
//執行testng的任務
<target name="testng" depends="compile">
<testng classpath="test/classes">
<xmlfileset dir="${configure.dir}" includes="testing.xml" />
</testng>
</target>
</project>
簡單的不能在簡單了,你只要告訴ant來調用,然后告訴ant配置文件在哪里,剩下的事都交給testng自己的配置文件去做就行了,然后ant以后都不用修改了。不建議將任務的細節寫在ant里面,首先功能不如testng自己的配置文件強大,而且ant需要維護。
posted on 2005-12-15 10:48
fanta 閱讀(2214)
評論(0) 編輯 收藏 所屬分類:
Java