zoukankan      html  css  js  c++  java
  • .NET工具篇(三)—NUnit

          NUnit是一个开源的.NET下的单元测试工具,可以在它的官方网站上获得它的源码,也可以下载一个安装包。它是一个非常好用的.NET单元测试工具。下面简单介绍一下其用法。

          首先在网上下载一个安装包,然后运行安装包,安装完成后,桌面上就会有一个图标,点击,主界面如下:

    image

          NUnit的图形界面有三个主要部分,左边是一个树形列表,显示所有的测试,信息和错误消息显示在右上方,堆栈跟踪信息显示在右下方。

          要想用NUnit进行单元测试,需要新建两个项目,一个是被测试的项目,一个是用来测试的项目,用来测试的项目必须是类库形式的项目。下面是一个简单的例子,新建了一个被测试的项目,里面有一个类Operation,这个类实现&,|,!以及^运算:

    public class Operation
       {
           public string AndOperation(string s1, string s2)
           {
               int num1 = Convert.ToInt32(s1, 2);
               int num2 = Convert.ToInt32(s2, 2);
               int result= num1 & num2;
               return Convert.ToString(result, 2).PadLeft(8,'0');
           }
           public string OrOperation(string s1, string s2)
           {
               int num1 = Convert.ToInt32(s1, 2);
               int num2 = Convert.ToInt32(s2, 2);
               int result = num1 | num2;
               return Convert.ToString(result, 2).PadLeft(8, '0');
           }
           public string NoOperation(string s1)
           {
               int num1 = Convert.ToInt32(s1, 2);
               int result = ~num1;
               return Convert.ToString(result, 2).PadLeft(8, '0');
           }
           public string DiffOrOperation(string s1, string s2)
           {
               int num1 = Convert.ToInt32(s1, 2);
               int num2 = Convert.ToInt32(s2, 2);
               int result = num1 ^ num2;
               return Convert.ToString(result, 2).PadLeft(8, '0');
           }
      }

         下面就对这个类进行测试,测试之前还需要建一个测试用的项目,取名叫做Test,里面新建一个类名为TestOperation,在测试用的项目中,最好是为每个需要测试的类都建一个对应的测试类。TestOperation代码如下:

    [TestFixture]
       public class TestOperation
       {
           Operation op = null;
           string str = "";
     
           [SetUp]
           public void SetUp()
           {
               op = new Operation();
               str = "";
           }
           [Test]
           public void TestAndOperation()
           {
               string s1 = "";
               string s2 = "";
     
               //00101010&00001010
                s1="10010001";
                s2="00101011";
               str = op.AndOperation(s1,s2);
               Assert.AreEqual(str,"00000001");
     
               s1 = "11011101";
               s2 = "11011011";
               str = op.AndOperation(s1, s2);
               Assert.AreEqual(str, "11011001");
     
               s1 = "00101010";
               s2 = "11100101";
               str = op.AndOperation(s1, s2);
               Assert.AreEqual(str, "00100000");
     
               s1 = "11010101";
               s2 = "00101010";
               str = op.AndOperation(s1, s2);
               Assert.AreEqual(str, "00000000");
     
               s1 = "11001001";
               s2 = "11011101";
               str = op.AndOperation(s1, s2);
               Assert.AreEqual(str, "11001001");
           }
      }

          在这个类里面,其实只对Operation中的AndOperation这个方法进行了测试。通过这个类的代码,可以看出以下几点:

    1.在测试用的类前面必须加上[TestFixture]标识,TestFixture是用来标记一个包含NUnit自动化测试的类。(注意在添加这些标记之前,必须先引用Nunit的类库NUnit.Framework,直接通过添加引用,然后在”.NET”面板中即可找到。)

    2.测试的方法前面需要加上[Test]标记,Test是用来表示这是一个需要被调用的自动化测试。给每个测试的方法前面都需要加上这个标识。

    3.测试的方法返回类型是Void,并且不接受任何形式的参数。

         然后在测试的方法中,直接调用new一个Opertaion对象,然后调用里面的方法(必须添加了对被测试项目的引用),最后用Assert类里面的方法来判断是否命中你想要的结果。Assert类位于NUnit框架的命名空间,包含一些静态方法。比如Assert.IsTrue(判断结果是不是为真),Assert.AreEqual(判断两对象是不是相等),Assert.AreSame(判断两个对象是不是相同的对象)等。选择合适的静态方法,至此,一个简单的测试项目就写好了,直接生成,然后拖放到NUnit中去,点击Run按钮,即可看到测试的结果,红色代表有测试失败的用例,绿色代表全部测试通过。

    image

          红色的代表有错误,通过提示,找到代码中相应的测试方法,修改后然后重新测试:

    image

          重新测试后没有红色的,都是绿色的,测试就都通过了。

          在上面的代码,还看到了一个setup标记,它的作用就相当于构造函数,NUnit在每一次运行测试类中的一个测试之前都会执行setup方法,同样还有另外一个标记teardown,这个标记的作用就相当于析构函数,NUnit在每一次运行测试类中的一个测试之后都会执行teardown方法。另外还有其他的一些特别属性,后面再进行介绍。

          NUnit还可以集成到VS中去,打开测试项目用的属性对话框,设置“启动外部程序”:

    image

         外部程序就选择你安装的NUnit,命令行参数就写你测试的项目所生成的dll,工作目录就是你测试项目的bin目录,设置之后,把测试用的类库项目设置为启动项,然后运行,它就会自动启动NUnit进行测试。

        上面对NUnit测试工具做了一个简单的介绍,后面有机会再深入介绍一下它的其他用法。

  • 相关阅读:
    软件架构的认识
    软件需求十步走读书笔记3
    软件需求十步走读书笔记2
    系统利益相关者描述案例
    项目目标文档
    《需求工程-软件建模与分析》读书笔记2
    《需求工程-软件建模与分析》读书笔记1
    专业实训题目需求分析
    2015年秋季个人阅读计划
    课程改进意见
  • 原文地址:https://www.cnblogs.com/xiaoxiangfeizi/p/2972481.html
Copyright © 2011-2022 走看看