2013-05-02 10 views
7

Wie verwenden Sie mehrere TestCaseSource-Attribute, um Testdaten für einen Test in N-Unit 2.62 bereitzustellen?So verwenden Sie mehrere TestCaseSource-Attribute für einen N-Unit-Test

ich zur Zeit mache folgendes:

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

Und so aussehen meine Testfalldatenquellen:

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


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

Leider N-Einheit wird nicht einmal den Test beginnen, da es sagt, ich liefere die falsche Anzahl von Argumenten. Ich weiß, dass Sie ein TestCaseObject als Rückgabetyp angeben und ein Objektarray übergeben können, aber ich dachte, dass dieser Ansatz möglich ist.

Können Sie mir helfen, dies zu lösen?

Antwort

10

Das entsprechende Attribut in dieser Situation ist . Im Wesentlichen geben Sie so eine Datenquelle für einzelne Parameter an.

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

die Art der Funktionalität, die ich suchte mit dem TestCaseSource Attribute aktiviert Dies wird.