C#中的单元测试

来源:互联网 发布:猫眼和微影合并.知乎 编辑:程序博客网 时间:2024/05/22 14:56

C#程序可以使用NUnit框架进行单元测试,NUnit是.NET语言的一个测试框架,和Java语言的JUnit同属于XUnit。

NUit官方的安装文件有msi的安装程序和不用安装的zip文件。安装msi或者使用zip中的dll可以通过NUit提供的GUI或则命令提示符进行单元测试。这里不详细叙述。

这里我介绍一个VS的插件TestDriven.NET,TestDriven.NET插件是对.NET语言在VS IDE中的一个插件里面集成了一些常用的单元测试框架,当然也包括NUit单元测试框架。所以相对NUit的GUI,TestDrive.NET框架直接集成到VS中,用起来跟方便。

首先到官网下载TestDrive.NET,有针对个人的免费版,然后进行安装,默认安装到C盘的Program Files(64位系统默认安装到Program Files(32))。

然后打开VS发现右键菜单多出了Run Test(s)等命令。

下面给出一个操作的实例:

新建工程,写要测试的函数(数组求最大值):

using System;namespace HelloCSharp{    class Hello    {        public static int Max(int[] data)        {            int max = Int32.MinValue;            for (int i = 0; i < data.Length; i++)            {                if (data[i] > max)                {                    max = data[i];                }            }            return max;        }    }}

工程引用上右键,选择添加引用,然后在浏览选项卡中,在C盘的TestDrive.NET的安装目录中选择NUit文件夹中的nunit.framework.dll添加引用(NUit文件夹下面有多个版本,选择最高的版本,事情而定)。

然后新建一个类,写单元测试代码:

using System;using NUnit.Framework;using HelloCSharp;namespace HelloCSharp.NUnitTest{    [TestFixture]    class HelloTest    {        [Test]        public void MaxRun()        {            Assert.AreEqual(Hello.Max(new int[] {0, 2, 1, 5, 3, 7, 9}), 9);        }    }}

TestFixture特性用于测试类上,Test特性用于测试方法上,使用Asset断言提供的方法进行测试。

只是在Output面板中的输出结果:

------ Test started: Assembly: HelloCSharp.exe ------1 passed, 0 failed, 0 skipped, took 0.58 seconds (NUnit 2.6.2).

0 0