空值的 Nunit 测试集合

Nunit testing collection for null value

我得到了这个文件我必须在::

上写一个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. 如果我必须编写一个场景来测试此集合中没有空值,我该如何继续做呢??

它可能看起来像这样:

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

要测试列表是否没有空成员,您可以在 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 上的文档,您可能还会找到其他选项!随你挑! :-)