我正在尝试将NUnit与values属性一起使用,以便我可以指定许多不同的输入,而无需进行100次单独的测试。
然而现在我意识到有时候我想使用相同的输入集,但是在下面的测试非常不同。
有没有办法可以在一个地方指定所有值,比如一个数组,并为每个值属性使用数组?
我想确保测试运行100个单独的测试,而不是1个运行100个值的测试。
我查看了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
}
答案 0 :(得分:25)
参见示例:
private string[] commonCases = { "Val1", "Val2", "Val3" };
[Test]
[TestCaseSource(nameof(commonCases))]
public void Test1(string value)
{
....
}
[Test]
[TestCaseSource(nameof(commonCases))]
public void Test12(string value)
{
....
}
答案 1 :(得分:3)
您可以在参数上使用FactoryAttribute
代替ValuesAttribute
而不是{{1}}。详细了解此here。
修改强> Alexander的权利。 FactoryAttribute是API的临时部分。正确的方法是使用TestCaseSourceAttribute