【问题标题】:Nunit testing collection for null value空值的 Nunit 测试集合
【发布时间】:2021-04-13 18:44:24
【问题描述】:

我得到了这个文件,我必须在上面写一个 nunit 测试::

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CollectionsLib
{
    public class Employee
    {
        public int EmpId { get; set; }
        public string EmpName { get; set; }
        public double Salary { get; set; }
        public DateTime DOJ { get; set; }  
    }

    public class EmployeeManager
    {
        private static readonly List<Employee> employees;

        static EmployeeManager()
        {
            employees = new List<Employee>
            {
                new Employee { EmpId=100, EmpName="John",DOJ=DateTime.Now.AddYears(-5),Salary=30000},
                new Employee { EmpId=101, EmpName="Mary",DOJ=DateTime.Now.AddYears(-2),Salary=10000},
                new Employee { EmpId=102, EmpName="Steve",DOJ=DateTime.Now.AddYears(-2),Salary=10000},
                new Employee { EmpId=103, EmpName="Allen",DOJ=DateTime.Now.AddYears(-7),Salary=50000},
            };
        }

        public List<Employee> GetEmployees()
        {
            return employees;
        }
        public List<Employee> GetEmployeesWhoJoinedInPreviousYears()
        {
            return employees.FindAll(x=>x.DOJ<DateTime.Now);
        }
    }
}

我的问题是:

  1. 如果我必须编写一个场景来测试这个集合中没有空值,我该怎么做呢??

【问题讨论】:

    标签: c# unit-testing nunit


    【解决方案1】:

    要测试一个列表是否没有空成员,您可以在 NUnit 中使用多种形式的断言,按照我个人的偏好顺序列出...

    Assert.That(someList, Is.All.Not.Null);
    Assert.That(someList, Has.None.Null);
    Assert.That(someList, Has.All.Not.Null);
    Assert.That(someList, Does.Not.Contain(null);
    CollectionAssert.AllItemsAreNotNull(someList);
    

    在每种情况下,someList 都是您要测试的列表。

    如果您查看https://docs.nunit.org/articles/nunit/intro.html 的文档,您还可以找到其他选项!任你选! :-)

    【讨论】:

      【解决方案2】:

      它可能看起来像这样:

      [Test]
      public void GetEmployees_Should_NotReturnAnyNulls()
      {
          var manager = new EmployeeManager();
          var employees = manager.GetEmployees();
      
          foreach(var employee in employees)
          {
              Assert.NotNull(employee);
          }
      }
      

      甚至更好,使用像这样的 nuget FluentAssertions:

      [Test]
      public void GetEmployees_Should_NotReturnAnyNulls()
      {
          var manager = new EmployeeManager();
          var employees = manager.GetEmployees();
          employees.Should().NotContainNulls();
      }
      

      【讨论】:

        猜你喜欢
        • 2011-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多