2012-12-24 61 views
16

我正在尝试将NUnit与values属性一起使用,以便我可以指定许多不同的输入,而无需进行100次单独的测试。NUnit用值数组进行测试

但是现在我意识到有些时候我想使用相同的一组输入,但是像下面这样非常不同的测试。

有没有一种方法可以在一个位置指定所有的值,如数组,并为每个值属性使用数组?

我想确保测试运行100个单独的测试,而不是运行100个值的1个测试。

我看了Nunit的文档,但我找不到一种方法来实现这一点。有任何想法吗?

代码:

[Test] 
public void Test1([Values("Value1", "Value2", "Value3", ... "Value100")] string value) 
{ 
    //Run Test here 
} 

[Test] 
public void Test2([Values("Value1", "Value2", "Value3", ... "Value100")] string value) 
{ 
    //Run Test here 
} 

[Test] 
public void Test3([Values("Value1", "Value2", "Value3", ... "Value100")] string value) 
{ 
    //Run Test here 
} 

回答

24

TestCaseSource attribute适合在这里。

见例如:

private string[] commonCases = { "Val1", "Val2", "Val3" }; 

[Test] 
[TestCaseSource("commonCases")] 
public void Test1(string value) 
{ 
    .... 
} 

[Test] 
[TestCaseSource("commonCases")] 
public void Test12(string value) 
{ 
    .... 
} 
3

您可以在测试方法,而不是ValuesAttribute上PARAM使用FactoryAttribute。阅读更多关于here

编辑: 亚历山大的权利。 FactoryAttribute是API的临时部分。正确的方法是使用TestCaseSourceAttribute