单元测试列表<>

本文关键字:列表 单元测试 | 更新日期: 2023-09-27 18:12:58

我是单元测试新手。我想单元测试一个公共方法,它从sql中获取数据,并将其保存在LIST<>中。那么最好的方法是什么呢?这是我的代码,

public static IList<UserDetails> GetUsersListForAllLocation()
    {
        using (AuthorizationScope authScope = new AuthorizationScope(AdminLogicalResource.Contacts.GetDisplayName(), ApplicationPermission.Update.ToString()))
        {
            var parameters = new[]
            {
                new Simplex.Parameter("@LoggedInUserId", ComponentContext.CurrentCustomer.UserId)
            };
            IList<UserDetails> contactList = ComponentContext.CommonDal.DeserializeMultiRecords<UserDetails>("[CR2].[spGetAllLocationUsers]", parameters, storedProcedure: true);
            return contactList;
        }
    }

单元测试列表<>

此代码似乎与sql数据库紧密耦合,因此您可能需要集成测试而不是单元测试。

如果您想进行集成测试,您可以:

  • 用已知数据建立测试数据库
  • 让这个方法在测试环境
  • 中查询这个测试数据库
  • 断言您检索的列表实际上是您期望的列表
对于断言,您可以使用Nunit CollectionAssert

您的测试可能看起来像

[Test]
public void ShouldRetrieveItemsFromDatabase(){
    List<UserDetails> expected = BuildExpectedList();
    List<UserDetails> actual = GetUsersListForAllLocation();
    CollectionAssert.AreEquivalent(expected, actual);
}