如何为N-Unit测试使用多个TestCaseSource属性

时间:2013-05-02 20:12:56

标签: c# .net unit-testing nunit testcasesource

如何使用多个TestCaseSource属性为N-Unit 2.62中的测试提供测试数据?

我目前正在做以下事情:

[Test, Combinatorial, TestCaseSource(typeof(FooFactory), "GetFoo"), TestCaseSource(typeof(BarFactory), "GetBar")]
FooBar(Foo x, Bar y)
{
 //Some test runs here.
}

我的测试用例数据源如下所示:

internal sealed class FooFactory
{
    public IEnumerable<Foo> GetFoo()
    {
        //Gets some foos.
    }
}


    internal sealed class BarFactory
{
    public IEnumerable<Bar> GetBar()
    {
        //Gets some bars.
    }
}

不幸的是,N-Unit甚至不会开始测试,因为它说我提供了错误数量的参数。我知道你可以指定一个TestCaseObject作为返回类型并传入一个对象数组,但我认为这种方法是可行的。

你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:11)

在这种情况下使用的适当属性是ValueSource。基本上,您正在为各个参数指定数据源,如此。

public void TestQuoteSubmission([ValueSource(typeof(FooFactory), "GetFoo")]  Foo x, 
[ValueSource(typeof(BarFactory), "GetBar")] Bar y)
{
    //Your test here.
}

这将使用TestCaseSource属性启用我正在寻找的功能类型。