转载:http://hi.baidu.com/grayworm/item/39aa11c5d9375d56bdef6990

五:常用断言
在NUnit中,断言是单元测试的核心。NUnit提供了一组丰富的断言,这些断言是Assert类的静态方法。如果一个断言失败,方法的调用不会返回值,并且会报告一个错误。如果一个测试包含多个断言,那些紧跟失败断言的断言都不会执行,因此,通常每个测试方法最好只有一个断言。

Assert类提供了最常用的断言。我们将Assert方法按如下分组:
    a.同等(Equality)断言 
    b.一致性(Identity)断言 
    c.比较(Comparison)断言 
    d.类型(Type)断言 
    e.条件(Condition)测试 
    f.工具(Utility)方法 
    
1.同等断言
    主要包括Assert.AreEqual()、Assert.AreNotEqual()Assert.IsNaN()
    前两个方法测试2个参数是否相等。重载的方法支持普通的值类型。
    Assert.AreEqual( int expected, int actual );
    Assert.AreEqual( int expected, int actual, string message );
    Assert.AreEqual( int expected, int actual, string message,params object[] parms );
         
    Assert.AreEqual( uint expected, uint actual );
    Assert.AreEqual( uint expected, uint actual, string message );
    Assert.AreEqual( uint expected, uint actual, string message,params object[] parms );

    Assert.AreEqual( decimal expected, decimal actual );
    Assert.AreEqual( decimal expected, decimal actual, string message );
    Assert.AreEqual( decimal expected, decimal actual, string message,params object[] parms );

    Assert.AreEqual( float expected, float actual, float tolerance );
    Assert.AreEqual( float expected, float actual, float tolerance,string message );
    Assert.AreEqual( float expected, float actual, float tolerance,string message, params object[] parms );

    Assert.AreEqual( double expected, double actual, double tolerance );
    Assert.AreEqual( double expected, double actual, double tolerance,string message );
    Assert.AreEqual( double expected, double actual, double tolerance,string message, params object[] parms );

    Assert.AreEqual( object expected, object actual );
    Assert.AreEqual( object expected, object actual, string message );
    Assert.AreEqual( object expected, object actual, string message,params object[] parms );

    Assert.AreNotEqual( int expected, int actual );
    Assert.AreNotEqual( int expected, int actual, string message );
    Assert.AreNotEqual( int expected, int actual, string message,params object[] parms );

    Assert.AreNotEqual( uint expected, uint actual );
    Assert.AreNotEqual( uint expected, uint actual, string message );
    Assert.AreNotEqual( uint expected, uint actual, string message,params object[] parms );

    Assert.AreNotEqual( decimal expected, decimal actual );
    Assert.AreNotEqual( decimal expected, decimal actual, string message );
    Assert.AreNotEqual( decimal expected, decimal actual, string message,params object[] parms );

    Assert.AreNotEqual( float expected, float actual );
    Assert.AreNotEqual( float expected, float actual, string message );
    Assert.AreNotEqual( float expected, float actual, string message,params object[] parms );

    Assert.AreNotEqual( double expected, double actual );
    Assert.AreNotEqual( double expected, double actual, string message );
    Assert.AreNotEqual( double expected, double actual, string message,params object[] parms );

    Assert.AreNotEqual( object expected, object actual );
    Assert.AreNotEqual( object expected, object actual, string message );
    Assert.AreNotEqual( object expected, object actual, string message,params object[] parms );

    不同类型的数值可以按期望的那样进行比较。下面的断言会成功: 
        Assert.AreEqual( 5, 5.0 );
    float型和double型的数值通常使用一个附加参数来进行比较,这个参数代表一个误差,在这个误差范围内,它们视为相等。

    如果2个一维数组有相同的长度,而且相应的数组元素也相等,那么通过调用Assert.AreEqual方法,这2个数组视为相等。
        注: 多维数组,嵌套数组(数组的数组),以及其他集合类型,例如ArrayList目前还不支持。

2.一致性断言
    Assert.AreSame()方法、Assert.AreNotSame方法。这两个方法主要判断两个参数引用的是否是同一个对象。
        Assert.AreSame( object expected, object actual );
        Assert.AreSame( object expected, object actual, string message );
        Assert.AreSame( object expected, object actual, string message,params object[] parms );

        Assert.AreNotSame( object expected, object actual );
        Assert.AreNotSame( object expected, object actual, string message );
        Assert.AreNotSame( object expected, object actual, string message,params object[] parms );
    
    Assert.Contains()方法用来测试在一个数组或列表里是否包含该对象。
       Assert.Contains( object anObject, IList collection );
        Assert.Contains( object anObject, IList collection,string message );
        Assert.Contains( object anObject, IList collection,string message, params object[] parms );
    
3.比较断言
    Assert.Greater():测试一个对象是否大于另外一个。 
    Assert.Less():测试一个对象是否于小另外一个。 
    
    Assert.Greater( int arg1, int arg2 );
    Assert.Greater( int arg1, int arg2, string message );
    Assert.Greater( int arg1, int arg2, string message,object[] parms );

    Assert.Greater( uint arg1, uint arg2 );
    Assert.Greater( uint arg1, uint arg2, string message );
    Assert.Greater( uint arg1, uint arg2, string message,object[] parms );

    Assert.Greater( decimal arg1, decimal arg2 );
    Assert.Greater( decimal arg1, decimal arg2, string message );
    Assert.Greater( decimal arg1, decimal arg2, string message,object[] parms );

    Assert.Greater( double arg1, double arg2 );
    Assert.Greater( double arg1, double arg2, string message );
    Assert.Greater( double arg1, double arg2, string message,object[] parms );

    Assert.Greater( double arg1, double arg2 );
    Assert.Greater( double arg1, double arg2, string message );
    Assert.Greater( double arg1, double arg2, string message,object[] parms );

    Assert.Greater( float arg1, float arg2 );
    Assert.Greater( float arg1, float arg2, string message );
    Assert.Greater( float arg1, float arg2, string message,object[] parms );

    Assert.Greater( IComparable arg1, IComparable arg2 );
    Assert.Greater( IComparable arg1, IComparable arg2, string message );
    Assert.Greater( IComparable arg1, IComparable arg2, string message,object[] parms ); 
    
    Assert.Less( int arg1, int arg2 );
    Assert.Less( int arg1, int arg2, string message );
    Assert.Less( int arg1, int arg2, string message,object[] parms );
        
    Assert.Less( uint arg1, uint arg2 );
    Assert.Less( uint arg1, uint arg2, string message );
    Assert.Less( uint arg1, uint arg2, string message,object[] parms );
        
    Assert.Less( decimal arg1, decimal arg2 );
    Assert.Less( decimal arg1, decimal arg2, string message );
    Assert.Less( decimal arg1, decimal arg2, string message,object[] parms );
        
    Assert.Less( double arg1, double arg2 );
    Assert.Less( double arg1, double arg2, string message );
    Assert.Less( double arg1, double arg2, string message,object[] parms );
        
    Assert.Less( float arg1, float arg2 );
    Assert.Less( float arg1, float arg2, string message );
    Assert.Less( float arg1, float arg2, string message,object[] parms );
        
    Assert.Less( IComparable arg1, IComparable arg2 );
    Assert.Less( IComparable arg1, IComparable arg2, string message );
    Assert.Less( IComparable arg1, IComparable arg2, string message,object[] parms );
    
4.类型断言
    Assert.IsInstanceOfType():判断一个对象的类型是否是期望的类型
    Assert.IsNotInstanceOfType():判断一个对象的类型是否不是期望的类型
    Assert.IsAssignableFrom():判断一个对象的类型是否属于某种类型
    Assert.IsNotAssignableFrom():判断一个对象的类型是否不属于某种类型
        
    Assert.IsInstanceOfType( Type expected, object actual );
    Assert.IsInstanceOfType( Type expected, object actual,string message );
    Assert.IsInstanceOfType( Type expected, object actual,string message, params object[] parms );
        
    Assert.IsNotInstanceOfType( Type expected, object actual );
    Assert.IsNotInstanceOfType( Type expected, object actual,string message );
    Assert.IsNotInstanceOfType( Type expected, object actual,string message, params object[] parms );
       
    Assert.IsAssignableFrom( Type expected, object actual );
    Assert.IsAssignableFrom( Type expected, object actual,string message );
    Assert.IsAssignableFrom( Type expected, object actual,string message, params object[] parms );
        
    Assert.IsNotAssignableFrom( Type expected, object actual );
    Assert.IsNotAssignableFrom( Type expected, object actual,string message );
    Assert.IsNotAssignableFrom( Type expected, object actual,string message, params object[] parms );
    
5.条件测试断言
这些方法测试并把测试的值作为他们的第一个参数以及把一个消息作为第二个参数,第二个参数是可选的。本文提供了下面的方法:
    Assert.IsTrue( bool condition );
    Assert.IsTrue( bool condition, string message );
    Assert.IsTrue( bool condition, string message, object[] parms );

    Assert.IsFalse( bool condition);
    Assert.IsFalse( bool condition, string message );
    Assert.IsFalse( bool condition, string message, object[] parms );

    Assert.IsNull( object anObject );
    Assert.IsNull( object anObject, string message );
    Assert.IsNull( object anObject, string message, object[] parms );

    Assert.IsNotNull( object anObject );
    Assert.IsNotNull( object anObject, string message );
    Assert.IsNotNull( object anObject, string message, object[] parms );

    Assert.IsNaN( double aDouble );
    Assert.IsNaN( double aDouble, string message );
    Assert.IsNaN( double aDouble, string message, object[] parms );

    Assert.IsEmpty( string aString );
    Assert.IsEmpty( string aString, string message );
    Assert.IsEmpty( string aString, string message,params object[] args );

    Assert.IsNotEmpty( string aString );
    Assert.IsNotEmpty( string aString, string message );
    Assert.IsNotEmpty( string aString, string message,params object[] args );

    Assert.IsEmpty( ICollection collection );
    Assert.IsEmpty( ICollection collection, string message );
    Assert.IsEmpty( ICollection collection, string message,params object[] args );

    Assert.IsNotEmpty( ICollection collection );
    Assert.IsNotEmpty( ICollection collection, string message );
    Assert.IsNotEmpty( ICollection collection, string message,params object[] args );
    
6.StringAssert断言

    StringAssert.Contains( string expected, string actual );
    StringAssert.Contains( string expected, string actual,string message );
    StringAssert.Contains( string expected, string actual,string message, params object[] args );

    StringAssert.StartsWith( string expected, string actual );
    StringAssert.StartsWith( string expected, string actual, string message );
    StringAssert.StartsWith( string expected, string actual,string message, params object[] args );

    StringAssert.EndsWith( string expected, string actual );
    StringAssert.EndsWith( string expected, string actual,string message );
    StringAssert.EndsWith( string expected, string actual,string message, params object[] args );

    StringAssert.AreEqualIgnoringCase( string expected, string actual );
    StringAssert.AreEqualIgnoringCase( string expected, string actual,string message );
    StringAssert.AreEqualIgnoringCase( string expected, string actual,string message params object[] args );
    
7.实用方法
   Fail()和Ignore(),是为了让我们对测试过程有更多的控制:
        Assert.Fail();
        Assert.Fail( string message );
        Assert.Fail( string message, object[] parms );

        Assert.Ignore();
        Assert.Ignore( string message );
        Assert.Ignore( string message, object[] parms );
    Assert.Fail方法为你提供了创建一个失败测试的能力:
        public void AssertStringContains( string expected, string actual )
        {
            AssertStringContains( expected, actual, string.Empty );
        }

        public void AssertStringContains( string expected, string actual,string message )
        {
            if ( actual.IndexOf( expected ) < 0 )
                Assert.Fail( message );
        }
   Assert.Ignore方法为你提供在运行时动态忽略一个测试或者一个测试套件(suite)的能力。它可以在一个测试,一个setup或fixture setup的方法中调用。我们建议你只在无效的案例中使用。它也为更多扩展的测试包含或排斥提供了目录能力,或者你可以简单将不同情况下运行的测试运行分解到不同的程序集。

NUnit使用详解(二)的更多相关文章

  1. .NET DLL 保护措施详解(二)关于性能的测试

    先说结果: 加了缓存的结果与C#原生代码差异不大了 我对三种方式进行了测试: 第一种,每次调用均动态编译 第二种,缓存编译好的对象 第三种,直接调用原生C#代码 .net dll保护系列 ------ ...

  2. PopUpWindow使用详解(二)——进阶及答疑

      相关文章:1.<PopUpWindow使用详解(一)——基本使用>2.<PopUpWindow使用详解(二)——进阶及答疑> 上篇为大家基本讲述了有关PopupWindow ...

  3. Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

    [Android布局学习系列]   1.Android 布局学习之——Layout(布局)详解一   2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)   3.And ...

  4. logback -- 配置详解 -- 二 -- <appender>

    附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...

  5. 爬虫入门之urllib库详解(二)

    爬虫入门之urllib库详解(二) 1 urllib模块 urllib模块是一个运用于URL的包 urllib.request用于访问和读取URLS urllib.error包括了所有urllib.r ...

  6. [转]文件IO详解(二)---文件描述符(fd)和inode号的关系

    原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ---------------- ...

  7. Android View 的绘制流程之 Layout 和 Draw 过程详解 (二)

    View 的绘制系列文章: Android View 的绘制流程之 Measure 过程详解 (一) Android View 绘制流程之 DecorView 与 ViewRootImpl 在上一篇  ...

  8. HTTPS详解二:SSL / TLS 工作原理和详细握手过程

    HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流 ...

  9. Linux dts 设备树详解(二) 动手编写设备树dts

    Linux dts 设备树详解(一) 基础知识 Linux dts 设备树详解(二) 动手编写设备树dts 文章目录 前言 硬件结构 设备树dts文件 前言 在简单了解概念之后,我们可以开始尝试写一个 ...

  10. pika详解(二) BlockingConnection

    pika详解(二) BlockingConnection   本文链接:https://blog.csdn.net/comprel/article/details/94592348 版权 Blocki ...

随机推荐

  1. nginx 多域名配置 (nginx如何绑定多个域名)

         nginx绑定多个域名可又把多个域名规则写一个配置文件里,也可又分别建立多个域名配置文件,我一般为了管理方便,每个域名建一个文件,有些同类域名也可又写在一个总的配置文件里. 一.每个域名一个 ...

  2. hdoj 1241 Oil Deposits

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  3. 一切皆WEB

    所有应用都应该成为Web应用吗?当然不是.总有一些重要的例外,有些种类的软件跟网络也毫无关系.但是,这些是少数情况,是一些特殊应用.它们固然是重要的小生态环境,但不管怎么说,就只是“小生态”. 如果你 ...

  4. 安卓问题http://blog.csdn.net/xb12369/article/details/50510302

  5. Qt 第一步,环境搭建与测试

    晚上离散数学课下课后就开始安装Qt. 最先安装的是5.2版本的,这个最新的版本集成了所有必须的工具,不需要配置,直接就可以运行的. 但是,看书和社区教程以及参考资料时候,发现大多是4.8版本的.于是, ...

  6. linux中配置maven环境

    一 .  下载maven http://maven.apache.org/download.cgi 二.   将maven解压到你的工具文件夹下 如我是解压到:  /home/urc/tool下 三. ...

  7. 判断2D平面内某点是否在某个旋转的矩形(OBB)内的算法

    http://stackoverflow.com/questions/7328424/point-in-obb-oriented-bounding-box-algorithm Given a cent ...

  8. OllyDbg 使用笔记 (二)

    OllyDbg 使用笔记 (二) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 TraceMe.exe下载地址:http://pan.baidu.com/s/1c0s2twO T ...

  9. Linux环境进程间通信

    http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html http://bbs.chinaunix.net/forum.ph ...

  10. Linux crontab 命令格式与具体样例

    基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...