使用Nunit做单元测试

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


    一、单元测试


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

    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);
        }

         /// 
         /// 加法
         /// 
         /// 
         /// 
         /// 
         public int Add(int a, int b)
         {
             return a + b;
         }

         /// 
         /// 减法
         /// 
         /// 
         /// 
         /// 
         public int Minus(int a, int b)
         {
             return a - b;
         }

         /// 
         /// 乘法
         /// 
         /// 
         /// 
         /// 
         public int Multiply(int a, int b)
         {
             return a * b;
         }

         /// 
         /// 除法
         /// 
         /// 
         /// 
         /// 
         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最后,执行测试。在测试方法内部任意一处右击,点击【运行测试】即可。


        使用Nunit做单元测试_第1张图片

        

        显示最后结果:

        使用Nunit做单元测试_第2张图片

    

    总结:

    至此,一个简单的单元测试便已经实现了。每当接触了一个新的事物,刚开始潜意识里总是觉得它不太容易掌握,但是在困难的东西都经不过自己的反复推敲,单元测试亦是如此。在解决新的问题,克服新的困难的过程中,不断提高着我们接收新事物的能力,增强着我们认识新事物的信心。

    

你可能感兴趣的:(Junit)