您的位置:首页 > 其它

使用Nunit做单元测试

2015-02-28 15:42 239 查看
参加完自考、软考,对单元测试都是概念上的理解,这篇博文主要是从实践上,讲解一下单元测试如何实现,使用什么工具,以及简单的实例讲解。

一、单元测试

单元测试,是开发者编写的一小段代码,用于检测被测代码一个很小、很明确的功能是否正确,是否和开发者所期望的一致。使用单元测试可以很轻松的实现:

1.静态类的测试

2.静态方法的测试

3.类的实例化测试

4.类的方法测试

二、Nunit简介

.NET下执行单元测试通常有两种方法:一个是微软在VS提供的单元测试,另一个是使用外部工具NUnit,前者可能有些复杂,但后者用起来却简单明了。

下载地址:下载Nunit

Nunit的启动有两种方式,一种是在客户端单独启动,这个时候需要指定已编译好的dll路径;另一种是集成在VS中启动,相对前者而言,后者用起来方便一些,在VS中安装插件【Nunit Test Adapter】就可实行测试结果的可视化了,插件直接在VS中搜索即可。







三、一个简单的Demo



通过一个简单的Demo,让大家感受一下,单元测试是非常容易实现的。

1.加入我们要测试的类为【Calculator】,里面有加、减、乘、除四个方法,代码如下:



namespace NUnitTest
{
    public class Calculator
    {
         static void Main(string[] args)
        {
            Calculator cal = new Calculator();
            int result = cal.Add(2,3);
            Console.WriteLine(result);

            Console.ReadKey(true);
        }

         /// <summary>
         /// 加法
         /// </summary>
         /// <param name="a"></param>
         /// <param name="b"></param>
         /// <returns></returns>
         public int Add(int a, int b)
         {
             return a + b;
         }

         /// <summary>
         /// 减法
         /// </summary>
         /// <param name="a"></param>
         /// <param name="b"></param>
         /// <returns></returns>
         public int Minus(int a, int b)
         {
             return a - b;
         }

         /// <summary>
         /// 乘法
         /// </summary>
         /// <param name="a"></param>
         /// <param name="b"></param>
         /// <returns></returns>
         public int Multiply(int a, int b)
         {
             return a * b;
         }

         /// <summary>
         /// 除法
         /// </summary>
         /// <param name="a"></param>
         /// <param name="b"></param>
         /// <returns></returns>
         public int Divide(int a, int b)
         {
             return a / b;
         }

    }
}


2.其次我们要建立一个测试类【CalculatorTest】,来测试类【Calculator】里面的方法,先看代码然后再给大家解释:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;//导入命名空间:NUnit.Framework
using NUnitTest;//导入“被测试类”的命名空间

namespace TestNunitTest
{

    [TestFixture]
    public class CalculatorTest
    {
        [Test]
        public void TestAdd()
        {
            Calculator cal = new Calculator();
            int expected = 5;
            int actual = cal.Add(2, 3);
            Assert.AreEqual(expected, actual);
        }
    }

}


2.1首先,我们要在项目中添加对NUnit的引用,也就是NUnit.Framework。

2.2其次,NUnit的常用属性介绍

①[TestFixture]

本属性用来标记一个类包含测试,用来指明该类是一个测试类。对这个类还有一些要求:

·该类必须是Public声明,否则NUnit看不到它的存在

·它必须又一个缺省的构造函数,否则NUnit不会构造它

·构造函数应该没有任何副作用,因为NUnit在运行时经常会构造这个类多次,如果要是构造函数要什么 副作用的话,那不是乱了.

②[Test]

本属性用来标记一个类(已经被标记为TestFixture)的某个方法是可测试的,为了和先前版本兼容, [test]忽略大小写。这个方法也有一些要求:

·这个方面必须为Public声明

·这个方法没有任何参数

·这个方法没有返回值

③Assert的使用

在Nunit中,Assert(断言)是一个类,包含以下方法:AreEqual,AreSame,Equals,Fail,Ignore等方 法,具体参见Nunit文档。

2.3最后,执行测试。在测试方法内部任意一处右击,点击【运行测试】即可。






显示最后结果:






总结:

至此,一个简单的单元测试便已经实现了。每当接触了一个新的事物,刚开始潜意识里总是觉得它不太容易掌握,但是在困难的东西都经不过自己的反复推敲,单元测试亦是如此。在解决新的问题,克服新的困难的过程中,不断提高着我们接收新事物的能力,增强着我们认识新事物的信心。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: