Xunit常用断言整理&带一点Shouldly介绍
Posted rulasann
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xunit常用断言整理&带一点Shouldly介绍相关的知识,希望对你有一定的参考价值。
每次学新东西的时候总要先祭出官方文档的:https://xunit.github.io/
搞.net core对Xunit应该不会陌生,毕竟也没几个可以选的,刚开始用,自己整理点东西怕忘了,大神就不用看了。
【安装】
在Nuget中搜索xunit,选择xUnit.net和xunit.runner.visualstudio包。
【Tips】
1.两种测试类型:[Fact][Theory]
2.其中[Theory]有三种传参类型:InlineData、ClassData、PropertyData
3.它们还有另外两个参数:
[Fact(DisplayName ="通过测试")]
[Fact(Skip ="跳过测试")]
4.测试类必须是public
【常用断言】
1:Assert.Equal /Assert.NotEqual 判断是否相等
方法:
测试:
2:Assert.Throws 判定异常
可以直接判定会出现的异常,如:
这里将字符串转换成int类型,当然如果传进去的参数不能转换就会抛出<FormatException>的异常:
异常也可以写在方法里:
测试:
这里如果不在方法里判定异常的话,断言的时候是没有异常可抛的,因为这个方法本身是没有问题的,但是在实际项目中,我们定义的参数总会有限制,所以需要自己判定异常。
3:Assert.True /Assert.False 这个一看就是布尔函数专用
测试:
4:Assert.Null/Assert.NotNull
Assert.Empty/Assert.NotEmpty
这两个都可以判定结果集是否为空。一般查询数据库返回结果时会用到。
关于Null和Empty的区别我们举两个例子:
我的理解就是Null是空,连空值都没有的那种空;
Empty是值为空,空字符串也是字符串所以不能用Null,而类变量不赋值默认为空。
在数据库里的区别大概就是这样子的:
应用场景:
前台根据具体信息(常常是主键)直接获取数据,如果数据不存在,一般都是返回Null;
如果是根据筛选条件返回多条数据,并将数据填入既定的表单中,即使没有符合条件的数据,一般也都是返回Empty;
Xunit常用断言我感觉就这七个,其他的我没用过,基本上都是望名生义的,要是日后遇到什么特殊的我再补充。
【should】
简介:Shouldly是一个轻量的断言框架,用于补充.NET框架下的测试工具。Shouldly将焦点放在当断言失败时如何简单精准的给出很好的错误信息。
使用:Nuget引用Shouldly
Xunit已经很好用了,为什么还要用Shouldly呢?
如果有一个方法是这样的,那要怎样测试?
既然有Assert.Throws是不是也有NotThrow什么的?
果然,网上搜了一圈发现以前是有的,Assert.DoesNotThrow,但是好像2.0版本之后就没有了。
所以我借助了Shouldly,它比Xunit更小巧,错误信息更全面,作为补充我觉得很搭。
【断言总集】
Assert:
Assert.All
Assert.Collection
Assert.Contains
Assert.DoesNotContain
Assert.DoesNotMatch
Assert.Empty
Assert.EndsWith
Assert.Equal
Assert.False
Assert.InRange
Assert.IsAssignableFrom
Assert.IsNotType
Assert.IsType
Assert.Matches
Assert.NotEmpty
Assert.NotEqual
Assert.NotInRange
Assert.NotNull
Assert.NotSame
Assert.NotStrictEqual
Assert.Null
Assert.ProperSubset
Assert.PropertyChanged
Assert.Raises
Assert.RaisesAny
Assert.RaiseAnyAsync
Assert.RaiseAsync
Assert.ReferenceEquals
Assert.Same
Assert.Single
Assert.StartsWith
Assert.StrictEqual
Assert.Subset
Assert.Superset
Assert.Throws
Assert.ThrowAny
Assert.ThrowsAnyAsync
Assert.True
Should:
Should.CompleteIn
Should.NotThrow
Should.Throw
Should.ThrowAsync
Should.Equals
Should.ReferenceEquals
Should.GetHashCode
Should.GetType
Should.MemberwiseClone
.ShouldBe
.ShouldBeAssignableTo
.ShouldBeGreaterThan
(以上有参考,整理的比较久不记得了,有熟悉的麻烦帮我补充一下)
以上是关于Xunit常用断言整理&带一点Shouldly介绍的主要内容,如果未能解决你的问题,请参考以下文章
.should('exist') 断言在赛普拉斯上是多余的吗?
流利的断言:XElement .Should().HaveValueContaining?