使用值数组进行NUnit测试

本文关键字:NUnit 测试 数组 | 更新日期: 2023-09-27 17:49:22

我正在尝试使用NUnit的值属性,以便我可以指定许多不同的输入,而不需要100个单独的测试。

然而,现在我意识到有时我想使用相同的输入集,但在非常不同的测试中,就像下面这样。

是否有一种方法,我可以指定所有的值在一个地方,像一个数组和使用数组的每个值属性?

我想确保测试作为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
}

使用值数组进行NUnit测试

TestCaseSource属性在这里是合适的

看到的例子:

private string[] commonCases = { "Val1", "Val2", "Val3" };
[Test]
[TestCaseSource(nameof(commonCases))]
public void Test1(string value)
{
    ....
}
[Test]
[TestCaseSource(nameof(commonCases))]
public void Test12(string value)
{
    ....
}

您可以在测试方法上使用FactoryAttribute,而不是在参数上使用ValuesAttribute。点击这里了解更多。

编辑:

亚历山大是对的。FactoryAttribute是API的临时部分。正确的方法是使用TestCaseSourceAttribute。