参数化是什么意思?

时间:2013-05-30 18:10:02

标签: data-driven-tests parameterization

在阅读数据驱动测试的一篇文章时,我遇到了一个术语“测试的参数化”。有人可以向我解释参数化的含义吗?

1 个答案:

答案 0 :(得分:1)

让我们看看TestNG的一个例子。假设你有函数SomeClass.calculate(int value)。您想检查函数在不同输入值上返回的结果。

使用非参数化测试,您可以执行以下操作:

@Test
public void testCalculate1()
{
    assertEquals(SomeClass.calculate(VALUE1), RESULT1)
}

@Test
public void testCalculate2()
{
    assertEquals(SomeClass.calculate(VALUE2), RESULT2)
}

使用参数化测试:

//This test method declares that its data should be supplied by the Data Provider
//named "calculateDataProvider"
@Test(dataProvider = "calculateDataProvider")
public void testCalculate(int value, int result)
{
    assertEquals(SomeClass.calculate(value), result)
}

//This method will provide data to any test method that declares that its Data Provider
//is named "calculateDataProvider"
@DataProvider(name = "calculateDataProvider")
public Object[][] createData()
{
    return new Object[][] {
       { VALUE1, RESULT1 },
       { VALUE2, RESULT2 },
    };
}

这样,TestNG引擎将从testCalculate方法生成两个测试,从createData函数返回的数组中提供参数。

有关详细信息,请参阅documentation