转载: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. 大数加法,A+B

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. [转]ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)

    前一篇中我们已经了解了Action Filter 与 内置的Filter实现,现在我们就来写一个实例.就写一个防盗链的Filter吧. 首先继承自FilterAttribute类同时实现IAction ...

  3. java基础之开发环境搭建

    我们这里后续的所有课程都使用eclipse 来开发java代码,下面我们来搭建开发环境: 1.首先去java.sun.com去下载jdk,可以下载1.6 的版本2.安装JDK,最好安装在某个盘的跟目录 ...

  4. oracle 存储过程 动态sql语句

    一.在oracle项目开发中越到问题: 在利用ODP向oracle中插入数据时,如果这样写:   insert into clobTable (id, story) values(1,'....'); ...

  5. HDOJ-ACM1097(JAVA) A hard puzzle

    这道题就是HDOJ的1061的变形: 1061 :求n的n次方的个位数 http://www.cnblogs.com/xiezie/p/5596779.html 1097 :求n的m次方的个位数 因此 ...

  6. iOS开发中常见的语句@synthesize obj = _obj 的意义详解

    我们在进行iOS开发时,经常会在类的声明部分看见类似于@synthesize window=_window; 的语句,那么,这个window是什么,_ window又是什么,两个东西分别怎么用,这是一 ...

  7. delphi 默认字体修改

    Windows Registry Editor Version 5.00   [HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\FormDesign] &q ...

  8. MapKit框架使用

    MapKit框架使用 一.地图的基本使用 1.简介 MapKit:用于地图展示,例如大头针/路线/覆盖层展示等(着重界面展示) 使用步骤: 导入主头文件 MapKit/MapKit.h MapKit有 ...

  9. ASP.NET MVC- 布署

    IIS6.0 1. 安装Microsoft .net FrameWork 4.0安装包; 2. 安装ASP.NET MVC 3; 3. 设置“Web扩展服务”中的“ASP.NET v4.0.0.303 ...

  10. jbpm4.4 demo2

    package cn.itcast.b_processdefinition; import java.io.FileInputStream; import java.io.FileOutputStre ...