TestNG中的@Factory与@DataProvider的执行比较

本文详细探讨了TestNG中@Factory和@DataProvider的区别和使用场景。@DataProvider主要提供测试数据,其返回的二维数组用于多组测试,而@Factory则用于创建测试类的不同实例。当@Factory结合@DataProvider,可以基于动态数据创建多个测试类实例。总结来说,@DataProvider执行的是同一测试方法的多组测试,@Factory则是执行多组测试类的所有方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TestNG中@Factory与@DataProvider的功能大相径庭,但是在多次执行的问题上常常理不清。

1.@DataProvider

首先,必须明确,使用@DataProvider修饰的方法,只负责提供测试数据,而且是测试执行前就确定了的静态数据。该方法必须被其他测试方法引用才意义。

其次,必须强调,使用@DataProvider修饰的方法,其返回的数据类型必须为Object[][]。为什么必须是二维数组呢?其中的一维表示单位测试数据,而另一维表示可以提供多组独立的测试数据,供逐一使用。

@DataProvider
public Object[][] dataMethod() {
    return new Object[][] { { "one" }, { "two" } };
}

所以,当@DataProvider修饰的方法提供了多组测试数据时,引用@DataProvider的测试方法,就会被多次执行,每次执行使用@DataProvider的一组测试数据。即@DataProvider修饰的方法中有多少组测试数据,引用@DataProvider的测试方法就会被执行多少次。但是自始至终只有一个测试类的实例,即该实例的一个测试方法被多次执行。

@Test(dataProvider = "dataMethod")
public void testMethod(String param) {
    System.out.println("The parameter valu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值