浅谈NUnit单元测试方法小总结

发表于:2011-12-30来源:博客园作者:韩迎龙点击数: 标签:NUnit单元测试
在软件的开发过程中,我们离不开测试,在这里我首先送给大家两句关于测试的话keep the bar green to keep the code clear 保持条是绿色则代码是干净的 单元测试并不是为了证明你是对的,而是为了证明你没有错,下面我就简单的介绍一下我总结的使用NUni

  在软件的开发过程中,我们离不开测试,在这里我首先送给大家两句关于测试的话keep the bar green to keep the code clear 保持条是绿色则代码是干净的

  单元测试并不是为了证明你是对的,而是为了证明你没有错,下面我就简单的介绍一下我总结的使用NUnit的一些方法。

  如何在Visual Studio.NET 2008中使用NUnit

  要在Visual Studio.NET 2008的项目中使用NUnit,首先必须往项目中添加对Nunit框架的引用。方法是在“解决方案资源管理器”窗口中“引用”选项,单击右键,选择“添加引用”,选择“.NET”下面的“nunit.framework.dll”,单击“确定”按钮,回到“解决方案资源管理器”页面,可以看到Nunit已经被添加到项目的引用中。如图所示:

  小知识点说明

  (1).在使用之前先加入命名空间空间using NUnit.Framework;

  (2).代码通过“[TestFixture]”来标示出测试类,通过“[Test]”标示出测试方法,这样在测试运行时,NUnit就可以知道这些类和方法是需要测试的,则加载运行单元测试。通过Assert类中的AreEqual方法来判断测试是否通过。如下:

  //用TestFixture标示出测试列

  [TestFixture]

  public class NunitTestClass

  {

  //用Test标示出测试方法

  [Test]

  public void TestAddTestClass()

  {

  Form1 form = new Form1();

  int a = 1;

  int b = 2;

  int expcted = 3;

  int actual = form.Add(1, 2);

  Assert.AreEqual(expcted, actual);

  }

  }

  (3).测试结果通过的类或方法则以绿色标注,不通过的类或方法以红色标注。黄色表示某些测试被忽略。

  Nunit简单属性总结

  (1).[TestFixture] 表示这是一个测试类

  (2).[Test] 表示这是一个测试方法

  (3). [SetUp] 只要一个函数被标记为[SetUp]属性的话,那么它就会在每一个测试的这些函数或者这些Case进行之前都要去运行一次。它用来在测试之前进行一个初始化的作用。

  (4). [TearDown]结束建立,资源回收,每个方法都执行一次。

  (5).[TestFixtureSetUp] 表示整个类的初始化,在函数最先执行的时候运行一次。

  (6).[TestFixtureTearDown] 表示销毁整个类的初始化,在函数最后呢执行的时候只运行一次。

  (7).[Test,Explicit] 显示运行,在Nunit测试器中不选中则不运行,选中的话则会运行

  (8).[Test] [Ignore(“this case is ignored”)] 忽略当前这个Case,不让其运行,在Nunit测试其中显示的是黄色。Ignored后面的字符串是为了在Nunit测试其中提示这个信息。

  (9).[Test] [Category(GroupName)] 把下面的case归纳在整个组里面,在NUnit里面选中组的话只显示组里面包含的函数。

  下面是一个简单的例子:整型冒泡排序的实现及测试

  /*在Calculator中写入如下的方法

  *整型冒泡排序的实现及测试

  */

  public int[] BubbleSort(int[] array)

  {

  if (null == array)

  {

  Console.Error.WriteLine("Parameter should't be null");

  return new int[] { };

  }

  for (int i = 0; i < array.Length - 1;++i)

  {

  bool swap = false;

  for (int j = 0; j < array.Length - i - 1; ++j)

  {

  if (array[j] > array[j + 1])

  {

  int temp = array[j]; //简单的一个交换

  array[j] = array[j + 1];

  array[j + 1] = temp;

  swap = true;

  }

  }

  if (!swap)

  {

  return array;

  }

  }

  return array;

  }

  在测试类CalculatorTest中输入如下的信息:

  [Test]

  [Category("GroupBubbleSort")]

  public void TestBubbleSort()

  {

  int[] array = { 1,4,4,4,4, 8, 4, 6, 5, 9 };

  int[] result = cal.BubbleSort(array);

  int[] Expected = { 1, 4,4,4,4,4, 5, 6, 8, 9 };

  Assert.AreEqual(Expected, result);

  }

  [Test]

  [Category("GroupBubbleSort")]

  public void TestBubbleSort1()

  {

  int[] array = null;

  int[] result = cal.BubbleSort(array);

  int[] excepted = { };

  Assert.AreEqual(excepted, result);

  }

  [Test]

  [Category("GroupBubbleSort")]

  public void TestBubbleSort2()

  {

  int[] array = { };

  int[] result = cal.BubbleSort(array);

  int[] excepted = { };

  Assert.AreEqual(excepted, result);

  }

  堆栈实例测试知识点

  [Test,ExpectedException] 表示期望这个函数抛出一个异常。

  新建MyStack类,在类里面模拟实现一些堆栈的知识点代码如下:

原文转自:http://www.ltesting.net