2016-08-03 1 views
1

List를 매개 변수로 받아 들일 수 있어야하는 NUnit 테스트를하고 있는데, 어떻게 그 목록을 매개 변수로 전달할 수 있는지 궁금합니다.목록 전달하기 <SomeObject> 매개 변수를 NUnit 테스트에 적용합니다.

나는과 같이 단위 테스트에 개별적으로 각 사용자에 전달할 수 있습니다

[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; 
} 

하지만 전체 List<User>에 전달해야합니다.

답변

2

TestCaseSource의 목적은 컬렉션의 각 개체가 테스트 메서드에서 새 테스트를 만드는 컬렉션을 반환하는 것입니다. 컬렉션을 전달하려면 컬렉션에 컬렉션을 래핑해야합니다. 그냥 컬렉션을 구성 것이다

[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 }; 
} 

일반적으로, 당신은 당신이 TestCaseSource 필요하지 않습니다 당신이 그렇지 않으면 반환되는 컬렉션에 여러 컬렉션을 추가 할 것입니다,

당신은 뭔가를 원하는 재귀 :)에 대해 이야기 귀하의 테스트 방법.

+0

매개 변수화 된 테스트의 경우 TestCase() 특성을 통해 컬렉션을 전달하려면 어떻게해야합니까? 지금은 Enum, Int, String 등과 같은 기본 유형을 전달할 수 있습니다. 이제는 동적으로 생성 된 콜렉션없이 다음과 같이 보입니다 : [TestCase (PersonType.Soldier, "John", 40, UnitTestNumber.Three)] SpecificAttributeCollectionForThisTest -이 테스트에 대한 값 목록입니다. [TestCase (PersonType.Soldier, "John", 40, SpecificAttributeCollectionForThisTest, UnitTestNumber.Three)] – CloudDev

+0

속성 매개 변수가 const 여야하기 때문에 복잡한 객체 또는 컬렉션을 전달할 수 없습니다. –

관련 문제