22

我正在尝试将 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
}
4

2 回答 2

29

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)
{
    ....
}
于 2012-12-24T19:08:39.877 回答
3

您可以使用FactoryAttribute测试方法,而不是ValuesAttribute参数。在此处阅读有关此内容的更多信息。

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

于 2012-12-24T19:03:10.497 回答