使用xUnit.NET 对.NET Core 项目进行单元测试

(1)三个A : Arrange  ------> Act   ----->Assert

(2)1、新建项目,选择xUnit测试项目

    2、代码写好后、测试---》测试窗口

  (3) 1、布尔型:Assert.True(result)  ----结果预期为True 

  2、字符串:Assert.Equal("Nick Carter",result);  ----是否相等

         Assert.StartWith("Nick",result);  ----是否以**开头

         Assert.EndsWith("Caeter",result);----是否以**结尾

         Assert.Contains("ck",result);-----是否包含

            Assert.Matches("[A-Z]{1}{a-z}+[A-Z]{1}[a-z]+",result); -----正则表达式验证

         Assert.Null(result); ----是否为空

         Assert.NotNull(result); 

  3、浮点型:Assert.Equal(expected,actual,precision);-----是否相等,最后的参数是精度

         Assert.InRange(actual,low,high)----是否在某个范围

  3、集合:Assert.Contains(expected,list); ----集合是否包含某个项

        Assert.DoesNotContain(expected,list)

      Assert.Contains(p.History,x=>x.StartWith("水")); ----集合内至少一个元素以"水"开头

      Assert.All(p.History,x=>Assert.True(x.Length >=2 )); ----集合内所有元素大于等于2

      Assert.Equal(expected,actual);

  4、其它类型:

      Assert.IsType<Person>(p);-------p是否为Person类

      Assert.IsNotType<Person>(p);

      Assert.IsAssignableFrom<Person>(p); ------p是否继承与Person类

      Assert.Same(p,p2); ----是否是同一个实例

      Assert.NotSame(p,p2);

  5、异常

      Assert.Throws<Exception>(()=>p.NotAllowed());-----判断是否跑出Exception异常

      var ex = Assert.Throws<Exception>(()=>p.NotAllowed());

      Assert.Equal("Not able to create",ex.Message); ------判断异常信息是否为’Not able to create’

  6、事件

      Assert.Raises<EventArgs>(

        handler =>p.PatientSlept += handler,

        handler =>p.PatientSlept -= handler,

         =>p.Sleep()); ------是否触发事件

(4)测试分组: [Trait("Name","Value")]

  可作用于方法名上,也可作用于类名上

(5)忽略测试:[Fact(Skip = "不需要跑这个测试")]

(6)自定义输出测试信息:

  private readonly ITestOutputHelper _output;

  public PatientShould(ItestOutputHelper output)

  {

    _output=output;

  }

  [Fact]

  public void BeNewWhenCreated()

  {

    _output.WriteLine("第一个测试");

    ……

  }

(7)数据来源:

  1、[InlineData(x,y,……)]

    [Theory]

    [InlineData(1,2,3)]

    [InlineData(2,3,5)]

    public void ShouldAdd(int x,int y,int expected)

    {

      var sut = new Calcu();

      var result = syt.Add(x,y);

      Assert.Equal(expected,result);

    }

  2、[MemberData(nameof(xxx),MemberType = typeof(xxx))]

原文地址:https://www.cnblogs.com/zuiailiuruoying/p/14458648.html