2013-05-02 62 views
7

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

我目前做如下:

[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个单位甚至不会揭开序幕,因为测试它说我提供了错误的参数。我知道你可以指定一个TestCaseObject作为返回类型并传入一个对象数组,但我认为这种方法是可能的。

你能帮我解决吗?

回答

10

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

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

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