TestNG中的运行时测试实例工厂详解

在前面的文章中,我们介绍了@Parameters标注,可以在运行时为测试方法设置参数。但是,对于一个测试类,只是因为测试方法的参数不同,就不得不在testng.xml中定义大量雷同的测试用例,这样的做法将很快导致测试规划的冗长,难以维护。

为此,TestNG还提供了测试实例的工厂机制,用到了@Factory标注。在这种工厂机制中,工厂类定义了一个使用@Factory标注声明的方法,该方法必须返回一个Object[]类型的数组,数组元素就是运行时生成的测试类的实例。这些测试类的实例往往采用不同的参数构造,因而可以执行不同的测试用例。

1.定义测试类

public class WebTest {
  private int m_numberOfTimes;
  public WebTest(int numberOfTimes) {
    m_numberOfTimes = numberOfTimes;
  }
 
  @Test
  public void testServer() {
   for (int i = 0; i < m_numberOfTimes; i++) {
     // access the web page
    }
  }
该测试类的构造带参数。

2.定义测试实例的工厂类

public class WebTestFactory {
  @Factory
  public Object[] createInstances() {
   Object[] result = new Object[10]; 
   for (int i = 0; i < 10; i++) {
      result[i] = new WebTest(i * 10);//动态参数的测试实例
    }
    return result;
  }
}
只有一个创建测试实例的方法,由@Factory标注声明。

3.在testng.xml配置文件中使用测试工厂类

<class name="WebTestFactory" />


补充,作为构造测试实例的参数,还可以使用@DataProvider,示例如下:

public class FactoryDataProviderFactory {
@Factory(dataProvider = "dp")
public Object[] FactoryDataProviderSampleTest(int n) {
  ...
}
 
@DataProvider(name = "dp")
public static Object[][] dp() {
  return new Object[][] {
    new Object[] { 41 },
    new Object[] { 42 },
  };
}
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值