技术开发 频道

一步一步学NUnit

  【IT168 技术文档】

  单元测试基础知识

  单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list 中去,然后确认该值出现在list 的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。

  执行单元测试,是为了证明某段代码的行为确实和开发者所期望的一致。

  当编写项目的时刻,如果我们假设底层的代码是正确无误的,那么先是高层代码中使用了底层代码;然后这些高层代码又被更高层的代码所使用,如此往复。当基本的底层代码不再可靠时,那么必需的改动就无法只局限在底层。虽然你可以修正底层的问题,但是这些对底层代码的修改必然会影响到高层代码。于是,一个对底层代码的修正,可能会导致对几乎所有代码的一连串改动,从而使修改越来越多,也越来越复杂。从而使整个项目也以失败告终。

  而单元测试的核心内涵:这个简单有效的技术就是为了令代码变得更加完美。

  NUnit介绍

  NUnit 是一个免费开源的产品,它提供了一套测试框架和一个测试运行程序(test runner)。

  注意:test tunner 知道如何寻找具有 [TestFixture] 属性的类和类中的 [Test] 方法。

  如何安装 NUnit

  在官网下载NUnit,当前最新的版是2.4.8,我下的是NUnit-2.4.8-net-2.0.zip。

  NUnit第一个演示

  我们用Visual Studio 2008新建一个NUnit项目:

  为了便于演示,我们把默认的Program.cs改成Calculator.cs,在Calculator类里,我们实现简单的加减乘除四个方法。完整代码如下:

using System;

namespace NUnitTest
{
    
public class Calculator
    {
        
/// <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;
        }

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

            Console.ReadKey(
true);
        }
    }
}

         如果没有单元测试,我们普通的测试方法就像是Main方法一样,这样的测试是一个很邪恶的测试方法,花时间且很难得到我们
想要的结果。

0
相关文章