【问题标题】:NUnit Test with an array of values带有值数组的 NUnit 测试
【发布时间】:2020-03-05 17:12:35
【问题描述】:

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

【问题讨论】:

    标签: c# nunit


    【解决方案1】:

    TestCaseSource attribute 适合这里。

    查看示例:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-28
        • 2011-01-22
        • 2011-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-25
        相关资源
        最近更新 更多