将 List<SomeObject> 参数传递给 NUnit 测试
Pass a List<SomeObject> paramter to NUnit Test
我正在进行 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>
作为整体传递。
TestCaseSource
的目的是 return 一个集合,其中集合中的每个对象从您的测试方法创建一个新的测试。你想传入一个集合,所以你需要将该集合包装在一个集合中。说说递归:)
你想要这样的东西,
[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 };
}
通常情况下,您会想要将多个集合添加到您正在 return 的集合中,否则您不需要 TestCaseSource
,您只需在您的测试方法中构建您的集合。
我正在进行 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>
作为整体传递。
TestCaseSource
的目的是 return 一个集合,其中集合中的每个对象从您的测试方法创建一个新的测试。你想传入一个集合,所以你需要将该集合包装在一个集合中。说说递归:)
你想要这样的东西,
[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 };
}
通常情况下,您会想要将多个集合添加到您正在 return 的集合中,否则您不需要 TestCaseSource
,您只需在您的测试方法中构建您的集合。