2016-08-03 8 views
1

Ich arbeite an einem NUnit-Test, der in der Lage sein muss, eine Liste als Parameter zu akzeptieren, und ich frage mich, wie kann ich diese Liste als Parameter übergeben?Eine Liste übergeben <SomeObject> Parameter zu NUnit Test

Ich kann wie so in jedem Benutzer individuell an die Einheit Test bestehen:

[Test, TestCaseSource("GetUsers")]   
public void MyExample_Test(User user) 
{ 
    Asset.Pass(); 
} 

private static List<User>GetUsers() 
{ 
    List<User>users=new List<User>(); 
    users.Add(new User()); 
    users.Add(new User()); 
    users.Add(new User()); 
    users.Add(new User()); 

    return users; 
} 

Aber ich brauche in List<User> als Ganzes zu übergeben.

Antwort

2

Der Zweck von TestCaseSource besteht darin, eine Sammlung zurückzugeben, bei der jedes Objekt in der Sammlung einen neuen Test aus Ihrer Testmethode erstellt. Sie möchten eine Sammlung übergeben, daher müssen Sie diese Sammlung in eine Sammlung umbrechen. Sprechen Sie über die rekursive :)

Sie wollen etwas, wie,

[Test, TestCaseSource("GetUserLists")]   
public void MyExample_Test(IList<User> users) 
{ 
    Asset.Pass(); 
} 

private static IEnumerbale<List<User>> GetUserLists() 
{ 
    IList<User> users = new List<User>(); 
    users.Add(new User()); 
    users.Add(new User()); 
    users.Add(new User()); 
    users.Add(new User()); 

    return new [] { users }; 
} 

Normalerweise Sie mehrere Sammlungen zur Sammlung Sie zurückgeben sonst nicht brauchen TestCaseSource hinzufügen wollen, würden Sie nur erstellen, um Ihre Sammlung in Ihrer Testmethode.

+0

In Bezug auf parametrisierte Tests, was, wenn ich eine Sammlung über das Attribut TestCase() übergeben wollte, wie würde ich das tun? Im Moment kann ich grundlegende Typen wie Enum, Int, String usw. übergeben, und jetzt sieht das ohne dynamisch erzeugte Sammlung aus: [TestCase (PersonType.Soldier, "John", 40, UnitTestNumber.Three)] aber ich denke ich will Es sieht so aus: [TestCase (PersonType.Soldier, "John", 40, SpecificAttributeCollectionForThisTest, UnitTestNumber.Three)] SpecificAttributeCollectionForThisTest - wäre eine Liste von Werten nur für diesen Test. – CloudDev

+0

Sie können keine komplexen Objekte oder Sammlungen übergeben, da die Attributparameter const sein müssen –

Verwandte Themen