TestNG中@Factory的用法一:简单的数据驱动 您所在的位置:网站首页 factory意思 TestNG中@Factory的用法一:简单的数据驱动

TestNG中@Factory的用法一:简单的数据驱动

2023-11-05 02:21| 来源: 网络整理| 查看: 265

为什么要使用@Factory注解呢,先来看下面这个例子

被测试类Person

package ngtest; import org.testng.annotations.Parameters; import org.testng.annotations.Test; /** * @author Administrator * */ public class Person{ String name; int age; @Parameters({"name","age"}) public Person(String name, int age) { super(); this.name = name; this.age = age; } @Test() public void say() { System.out.print("我是"+name+" "); if(age=18&&age45&&age60){ System.out.println("我是老年人"); } } }

该类的say()方法中有四个判断分支,为了测试充分,必须执行四次这个方法,如果不使用@Factory注解,在TestNG配置文件中必须这样配置:

如果使用@Factory注解,就比较简单,而且方便扩展,示例如下。

不需改动原有类,添加一个新类PersonFactory

package ngtest; import java.util.ArrayList; import org.testng.annotations.Factory; public class PersonFactory { @Factory public Object[] factory() { ArrayList testList = new ArrayList(); Person tp = new Person("明明",10); testList.add(tp); Person tp2 = new Person("杨子",20); testList.add(tp2); Person tp3 = new Person("刘创",50); testList.add(tp3); Person tp4 = new Person("朱爷爷",70); testList.add(tp4); return testList.toArray(); } }

运行时,可以在Eclipse中,在这个factory类上点击右键,run as testng suite执行,也可以配置在testng.xml中,只需要配置factory类即可,原类不用管。testng.xml

运行结果

[TestNG] Running: D:\workspace\tester\testng.xml 我是朱爷爷 我是老年人 我是杨子 我是青年人 我是刘创 我是中年人 我是明明 我未成年 =============================================== Suite Total tests run: 4, Failures: 0, Skips: 0 =============================================== 使用@Factory的运行原理 如果不使用@Factory,运行普通的被@Test标注的方法时,实际上是TestNG框架调用了该类的构造函数构造出一个对象,然后再执行对象的这个方法。使用了@Factory后,可以看到被@Factory标注的方法返回了一个Object数组,数组中每一个元素是一个被测试类的对象。也就是说@Factory构造了多个被测试类对象,然后把每一个对象都传递给了TestNG框架,然后TestNG框架在分别执行这些对象中被@Test标注的方法。通过上面的描述,我们就知道了@Factory可以帮助我们实现简单的数据驱动测试(根据测试数据,执行对应的程序)。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有