NUnit单元测试使用实例

原创 2007年09月20日 15:42:00

1.新建.NET项目-->类库

2.添加引用  nunit.framework.dll

3.编写测试用例(Test Case)

 

using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;

namespace NUnitTest
{
    
//作者: 王文平
    
//日期: 2007-09-20
    
//描述: NUnit单元测试Demo
    /*
     * TDD的简介
     * 使用下面2个原则来定义TDD
     * 除非你有一个失败的自动测试,永远不要写一单行代码. 
     * 阻止重复
     * 第一个原则是显而易见的.在没有失败的自动测试下就不要写代码
     * 第二个原则说明了在一个程序中,不应该包含重复的代码.如果代码重复
     * /

    /*
     * TestFixture 属性
     *本属性标记一个类包含测试,当然setup和teardown方法可有可无.
     *做为一个测试的类,这个类还有一些限制 
     *必须是Public,否则NUnit看不到它的存在. 
     *它必须有一个缺省的构造函数,否则是NUnit不会构造它. 
     
*/

    [TestFixture]
    
public class NUnitExample
    {
        
private int a;
        
private int b;
        
//SetUp 属性
        
//初始化
        [SetUp]
        
public void InitializeOperands()
        {
            a 
= 1;
            b 
= 2;
        }

        
//Test属性用来标记一个类(已经标记为TestFixture)的某个方法是可以测试的.
        [Test]
        [Category(
"Numbers")]
        
public void AddTwoNumbers()
        {
            
int sum = a + b;
            Assert.AreEqual(sum, 
3);
        }
        [Test]
        [Category(
"Numbers")]
        
public void MultiplyTwoNumbers()
        {
            
int product = a * b;
            Assert.AreEqual(
2, product);
        }

        
//TearDown 属性
        
//清除


        
/*
         * ExpectedException 属性
         * 这里是一个验证这个假设的测试.有的时候,我们知道某些操作会有异常出现.
         * 例如, 在实例中增加除法,某个操作被0除,抛出的异常和.NET文档描述的一样.参看以下源代码 
         
*/

        [Test]
        [Category(
"Exception")]
        [ExpectedException(
typeof(System.DivideByZeroException))]
        
public void DivideByZero()
        {
            
int zero = 0;
            
int infinity = a / zero;
            Assert.Fail(
"Should have gotten an exception");
        }

        
//Ignore 属性
        
//保持测试,但又不运行
        [Test]
        [Category(
"Numbers")]
        [Ignore(
"Multiplication is ignored")]
        
public void MultiplyTwoNumbers2()
        {
            
int product = a * b;
            Assert.AreEqual(
3, product);
        }

        
//TestFixtureSetUp/TestFixtureTearDown 属性
        
//正如他们名字表明的一样,这些属性用来标记为整个test fixture初始化/释放资源方法一次的方法. 
        
//为所有test fixture的测试共享相同的数据库连接对象,我们可以写一个打开数据库连接的方法,标记为TestFixtureSetUp属性
        
//编写另外一个关闭数据库连接的方法,标记为TestFixtureTearDown属性


        
//Category 属性
        
//对于测试来说,你有的时候需要将之分类,此属性正好就是用来解决这个问题的。 
        
//你可以选择你需要运行的测试类目录,也可以选择除了这些目录之外的测试都可以运行。
        
//在命令行环境里 /include 和/exclude来实现。在GUI环境下,就更简单了,选择左边工作域里的Catagories Tab,选择Add和Remove既可以了。


        
//Explicit属性 
        
//本属性忽略一个test和test fixture,直到它们显式的选择执行。如果test和test fixture在执行的过程中被发现,就忽略他们。
        
//所以,这样一来进度条显示为黄色,因为有test或test fixture忽略了。
        
//原因是Ingore属性忽略了某个test或test fixture,那么他们你再想调用执行是不可能的。那么万一有一天我想调用被忽略的test或test fixture怎么办,就用Explicit属性了。我想这就是其中的原因吧。
        [Test, Explicit]
        [Category(
"Exception")]
        [ExpectedException(
typeof(DivideByZeroException))]
        
public void DivideByZero2()
        {
            
int zero = 0;
            
int infinity = a / zero;
            Assert.Fail(
"Should have gotten an exception");
        }

        
//Expected Exception属性 
        
//期望在运行时抛出一个期望的异常,如果是,则测试通过,否则不通过。
        
//在本测试中,应该抛出DivideByZeroException,但是期望的是InvalidOperationException,所以不能通过。
        
//如果我们将[ExpectedException(typeof(InvalidOperationException))]改为[ExpectedException(typeof(DivideByZeroException))],本测试通过。
        [Test]
        [Category(
"Exception")]
        [ExpectedException(
typeof(DivideByZeroException))]
        
public void ExpectAnException()
        {
            
int zero = 0;
            
int infinity = a / zero;
            Assert.Fail(
"Should have gotten an exception");
        }

    }   
}

单元测试——NUnit测试简单实例

一、测试准备工作:NUnit的下载及安装 http://blog.csdn.net/wangqingbo0829/article/details/43975243   二、      流程: (1)存...

单元测试之道C#版:使用NUnit

  • 2013年09月11日 10:44
  • 11.6MB
  • 下载

在ArcGIS Engine和ArcGIS SDE开发中使用NUnit单元测试

在ArcGIS Engine和ArcGIS SDE开发中使用NUnit单元测试

单元测试之道(使用NUnit).doc

  • 2011年08月12日 15:29
  • 520KB
  • 下载

使用Nunit做单元测试

参加完自考、软考,对单元测试都是概念上的理解,这篇博文主要是从实践上,讲解一下单元测试如何实现,使用什么工具,以及简单的实例讲解。     一、单元测试     单元测试,是开发者编写的一小段...

如何使用NUnit编写单元测试

1、简介      编写单元测试是一种验证行为,更是一种设计行为。同样,它更是一种编写文档的行为。编写单元测试避免了相当数量的反馈循环,尤其是功能验证方面的反馈循环。      什么是Un...

使用NUnit进行单元测试——断言篇(Assertions)

断言介绍 在任何一个xUnit框架中,断言都是单元测试的核心,NUnit也不例外。NUnit提供了一组丰富的断言,这些断言作为Assert类的静态方法。 如果一个断言失败,方法的调用不会返...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NUnit单元测试使用实例
举报原因:
原因补充:

(最多只允许输入30个字)