testng-dataprovider - 如何在覆盖构造函数中使用 2 个具有 2 个数据类型和 1 个工厂的 DataProviders
问题描述
我有两个DataProvider
s 应该在一个工厂中设置两种数据类型(long 和 double)的数据,但是当我运行代码时,测试采用不同的数据类型,例如 double 和 int。
public class FactoryTest {
@Factory(dataProvider ="doubleData")
public Object[] getArithmeticDoubleFunctions(double firstNumber,double secondNumber)
{
System.out.println(String.format("Generate test for user: %s %s", firstNumber, secondNumber));
return new Object[]{new ArithmeticFunctionsTest(firstNumber,secondNumber)};
}
@Factory(dataProvider ="longData")
public Object[] getArithmeticLongFunctions(long firstNumber1,long secondNumber1)
{
System.out.println(String.format("Generate test for user: %s %s", firstNumber1, secondNumber1));
return new Object[]{new ArithmeticFunctionsTest( firstNumber1,secondNumber1)};
}
}
@DataProvider(name="longData")
public Object[][] arithmeticDoubleData() {
return new Object[][]{{10, 12}, {-1,-1},{-1,23},{0,1},{-1,2}};
}
@DataProvider(name="doubleData")
public Object[][] arithmeticLongData() {
return new Object[][]{{10.0, 12.3}, {-1.1,-1},{-1.7,23.2},{0,1.2},{-1.1,2.2}};
}
public ArithmeticFunctionsTest(long firstNumber, long secondNubmer) {
this.firstLongNumber = firstNumber;
this.secondLongNumber = secondNubmer;
}
public ArithmeticFunctionsTest(double firstNumber, double secondNumber) {
this.firstDoubleNumber = firstNumber;
this.secondDoubleNumber = secondNumber;
}
@BeforeClass
public void setUp() {
calculator = new Calculator();
}
@Test
public void testLongSum() {
Assert.assertEquals(calculator.sum(firstLongNumber, secondLongNumber), firstLongNumber + secondLongNumber);
System.out.println(firstLongNumber+" "+secondLongNumber+" Long sum");
}
@Test
public void testDoubleSum() {
Assert.assertEquals(calculator.sum(firstDoubleNumber, secondDoubleNumber), firstDoubleNumber + secondDoubleNumber);
System.out.println(firstDoubleNumber+" "+secondDoubleNumber+"double sum");
}
带有firstNumber
和secondNumber
类型的测试应该只有具有所需类型的数据提供者,但类型是混合的。
解决方案
public class FactoryTest {
@Factory(dataProvider ="doubleData")
public Object[] getArithmeticDoubleFunctions(double firstNumber,double secondNumber)
{
System.out.println(String.format("Generate test for user: %s %s", firstNumber, secondNumber));
return new Object[]{new ArithmeticFunctionsTest(firstNumber,secondNumber)};
}
@Factory(dataProvider ="longData")
public Object[] getArithmeticLongFunctions(long firstNumber1,long secondNumber1)
{
System.out.println(String.format("Generate test for user: %s %s", firstNumber1, secondNumber1));
return new Object[]{new ArithmeticFunctionsTest( firstNumber1,secondNumber1)};
}
@DataProvider(name="longData")
public Object[][] arithmeticDoubleData() {
return new Object[][]{{10, 12}, {-1,-1},{-1,23},{0,1},{-1,2}};
}
@DataProvider(name="doubleData")
public Object[][] arithmeticLongData() {
return new Object[][]{{10.0, 12.3}, {-1.1,-1},{-1.7,23.2},{0,1.2},{-1.1,2.2}};
}
推荐阅读
- javascript - 如何使用 OnSubmit Googleform 和 Iframe 在其他网站上显示 PDF 链接?
- r - 如何在 lapply 中访问索引号
- reactjs - 我如何在 iOS 中新安装的 pwa 应用程序上征求第三方跟踪和 cookie 的同意?
- python - 找不到 discord bot heroku 的路径
- excel - Excel 公式部分从表数据动态构建数组
- sql-server - SQL Server FORMAT 创建长度非常大的 varchar
- javascript - 从 Notion API 中的数据库查询中获取页面标题?
- javascript - puppeteer 如何单击动态“查看更多”链接,直到加载所有内容
- testing - NestJS 测试 ConfigService 工作
- javascript - 如何在条件中使用 javascript 函数参数(字符串)