源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

测试框架nunit之assertion断言使用详解

  • 时间:2022-10-26 04:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:测试框架nunit之assertion断言使用详解
任何xUnit工具都使用断言进行条件的判断,NUnit自然也不例外,与其它的xUnit(如Junit、phpUnit、pythonUnit)相比,由于大量使用了Generic、Attribute等语言特征,NUnit提供了更为方面、灵活的测试方法,下面先介绍一下断言。 Nunit一共有四个类断言类,分别是Assert、StringAssert、FileAssert和DirectoryAssert,它们都在NUnit.Framework命名空间,其中Assert是常用,也是我们最熟悉的,而另外三个断言类,顾名思义,分别对应于字符串的断言、文件的断言和目录的断言,理论上,仅Assert类就可以完成所有条件的判断,然而,如果合理的运用后面的三个断言,将使代码更加简洁、美观,也更加便于理解和维护。 一:Assert类 对于我们通常的单元测试代码,Assert类中的静态方法就可以完成,其中大家最熟悉的应该是Assert. AreEqual()方法,其实,除了AreEqual,NUnit还提供了众多的比较方式,满足不同的代码要求。 1:相等/不相等判断 AreEqual:判断两个值相等 AreNotEqual:判断两个值不相等 示例:
[u]复制代码[/u] 代码如下:
Int a=1 Assert.AreEqual(a,1);//通过判断 Assert.AreEqual(a,2);//不能通过判断
注意,除了AreEqual/ AreNotEqual,下面几乎所有的方法都支持多态(多种数据类型),以及多参数,除了经常使用的Assert .AreEqual(int a,int b),还有一种典型的参数形式: Assert.AreEqual(int a,int b,string message); 或者 Assert.XXX(int a,int b,string message); 其中第三个参数是条件不通过时输出的信息,以便于错误的定位 对于double和decimal类型,这两个方法还支持比较时的浮点误差 例如以下代码:
[u]复制代码[/u] 代码如下:
double a = 1.1; double b = 1.11; double c = 0.1; Assert.AreEqual(a, b, c);//通过判断 c=0.01; Assert.AreEqual(a, b, c);//不能通过判断
2:类的判断 AreSame:判断两个对象相等 AreNotSame:判断两个对象不相等 Contains:判断是否是否某对象 示例:
[u]复制代码[/u] 代码如下:
List<string> list = new List<string>(); list.Add("a"); list.Add("b"); Assert.Contains("a", list); //通过判断 Assert.Contains("aa", list); //不能通过判断
3:条件判断 IsTrue:判断条件为真 True:同上 IsFalse:判断条件为假 False:同上 IsNull:判断是否为空 Null:同上 IsNotNull:判断不为空间 NotNull:同上 IsNaN:判断数值是Nan IsEmpty/IsNotEmpty:判断字符串是否为空/不为空 IsEmpty/IsNotEmpty:判断集合是否为空/不为空 示例:
[u]复制代码[/u] 代码如下:
int a=100; Assert. IsTrue(a==100);//通过判断 Assert. True(a==100);//通过判断  
4:比较判断 Greater:大于 GreaterOrEqual:大于等于 Less:小于 LessOrEqual:小于大于 示例:
[u]复制代码[/u] 代码如下:
int a = 100; Assert.Greater(a, 99); Assert.GreaterOrEqual(a, 100);
5:类型判断 IsInstanceOfType/ IsNotInstanceOfType:是/不是某个类的实例(从2.5之后支持泛型) 例如:
[u]复制代码[/u] 代码如下:
public class Person {     public string name {set;get;} } Person p = new Person(); p.name = "a"; Assert.IsInstanceOf(typeof(Person), p);//通过判断 Assert.IsInstanceOf(typeof(System.String), p);//不能通过判断
  6:异常判断 Throws:应该抛出某类型的异常 DoesNotThrow:不应该抛出某类型的异常 7:其它常用的方法 Pass:强行让测试通过 Fail:强行让测试失败 Ignore:忽略该测试方法 Inconclusive:未验证该测试 二:StringAssert类 StringAssert用于String类型的断言判断: StringAssert.Contains:是否包含子串 StringAssert.StartsWith:是否以某子串开头 StringAssert.EndsWith:是否以某子串结尾 StringAssert.AreEqualIgnoringCase:两个字符串是否在不区分大小写时相等 StringAssert.IsMatch:是否匹配,(使用正则表达式进行字符串比较) 示例:
[u]复制代码[/u] 代码如下:
string s1 = "abc"; StringAssert.Contains("b", s1); StringAssert.StartsWith("a", s1); StringAssert.EndsWith("c", s1); string s2 = "aBc"; StringAssert.AreEqualIgnoringCase(s1, s2); StringAssert.IsMatch("[a|book]", "123");
三:CollectionAssert类 AllItemsAreInstancesOfType:集合中的各项是否是某某类型的实例 AllItemsAreNotNull:集合中的各项均不为空 AllItemsAreUnique:集合中的各项唯一 AreEqual:两个集合相等 AreEquivalent:两个集合相当 AreNotEqual:两个集合不相等 AreNotEquivalent:两个集合不相当 DoesNotContain:集合中不包含某对象 IsSubsetOf:一个集合是另外一个集合的子集 IsNotSubsetOf:一个集合不是另外一个集合的子集 IsEmpty:集合为空 IsNotEmpty:集合不为空 IsOrdered:集合的各项已经排序 示例:
[u]复制代码[/u] 代码如下:
List<int> a = new List<int>(); List<int> b = new List<int>(); CollectionAssert.IsEmpty(a); for (int i = 1; i <= 10; i++) {     a.Add(i);     b.Add(i); } CollectionAssert.AreEqual(a, b); CollectionAssert.IsOrdered(a); b.Remove(1); CollectionAssert.IsSubsetOf(b, a); CollectionAssert.AreEqual(a, b);
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部