posts - 32,comments - 75,trackbacks - 0

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

TestNGAnt提供了很好的支持,这是我写得测试用的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 阅读(2204) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: