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

elu*_*id8 11 .net c# nunit unit-testing 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.
}
Run Code Online (Sandbox Code Playgroud)

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

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


    internal sealed class BarFactory
{
    public IEnumerable<Bar> GetBar()
    {
        //Gets some bars.
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

elu*_*id8 14

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

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

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