zoukankan      html  css  js  c++  java
  • VS2010整合NUnit进行单元测试

    1、下载安装NUnit(最新win版本为NUnit-2.6.0.12051.msi) http://www.nunit.org/index.php?p=download

    2、下载并安装VS的Visual Nunit 2010 插件  http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099

    注:可通过VS的“视图”->“其他窗口”找到并打开该插件(快捷键:Ctrl+F7)

    3、新建测试项目UnitTestApp(示例为简单的控制台应用程序),引入nunit.framework类库(默认安装后文件所在路径:C:Program Files NUnit 2.6inframework unit.framewor.dll)

    4、添加Calculator类,实现一个简单加法和获取单例方法

    namespace UnitTestApp
    {
        public class Calculator
        {
            public int Add(int a, int b)
            {
                return a + b;
            }
    
            private static readonly object objSync = new object();
            private static Calculator instance = null;
    
            public static Calculator GetInstance()
            {
                if (instance == null)
                {
                    lock (objSync)
                    {
                        if (instance == null)
                        {
                            instance = new Calculator();
                        }
                    }
                }
                return instance;
            }
    
        }
    }

    5、新增NUnitTest类进行单元测试

    using NUnit.Framework;
    
    namespace UnitTestApp
    {
        [TestFixture]
        public class NUnitTest
        {
            private Calculator calc = null;
    
            [SetUp]
            public void SetUp()
            {
               calc = new Calculator();
            }
    
            [Test]
            public void AddTest()
            {
                int result = calc.Add(1, 1);
                Assert.AreEqual(2, result);
            }
    
            [Test]
            public void AddTestFailure()
            {
                int result = calc.Add(1, 1);
                Assert.AreEqual(10, result);
            }
    
            [Test]
            public void SingtonTest1()
            {
                calc = Calculator.GetInstance();
                Assert.IsNull(calc);
            }
    
            [Test]
            public void SingtonTest2()
            {
                calc = Calculator.GetInstance();
                var calc2 = Calculator.GetInstance();
                Assert.IsTrue(object.Equals(calc, calc2));
            }
    
            [TearDown]
            public void TearDown()
            {
                calc = null;
            }
    
        }
    }

    编译控制台项目,点击Visual Nunit 插件的“Run”按钮,然后一切清静了。

    注:在上面的代码中引用 NUnit.Framework,使用TestFixture标注这是用于测试的类,在其中使用 Test表示具体的测试用例。可以看到单元测试中最重要的是断言,其他完全交给框架自动化。测试结果可以通过插件及时看到:

    demo下载:UnitTestApp

    参考:http://www.cnblogs.com/leoo2sk/archive/2010/01/13/pragmatic-unit-testing-with-nunit.html

    http://www.cnblogs.com/dudu/archive/2011/07/26/unit_testing_constructor_dependency_injection.html

    基础知识:

          [TestFixture]表示:类包含了测试代码(这个特性可以被继承)。这个类必须是公有的,这个类还必须有一个默认构造函数。

      [Test]表示它是一个测试方法。测试方法的返回值必须为void并且不能带有参数

      [SetUp]属性:用来标识方法,在开始所有测试之前执行,用来在测试前初始化一些资源,比如初始化类。

          [TearDown]属性:用来标识方法,在所有测试完成之后执行,用来释放一些资源。

      [Ignore]属性:用来标识方法,指示这个方法由于某些原因暂时不需要测试(比如没有完成相关代码)

    Nunit常用类和方法

    Assert(断言):

      如果断言失败,方法将没有返回,并且报告一个错误。

      如果一个方法中包括了多个断言,在失败的断言之后的所有断言将不会被执行。基于这个原因,最好是为每个测试的断言使用try语句。

      1、测试二个参数是否相等

    Assert.AreEqual( int expected, int actual );
    Assert.AreEqual( decimal expected, decimal actual );
    。。。。

      2、测试二个参数是否引用同一个对象

    Assert.AreSame( object expected, object actual );
    Assert.AreNotSame( object expected, object actual );

      3、测试一个对象是否被一个数组或列表所包含

    Assert.Contains( object anObject, IList collection );

      比较断言:

      4、测试一个对象是否大于另一个对象

    Assert.Greater( int arg1, int arg2 );

      5、测试一个对象是否小于另一个对象

    Assert.Less( int arg1, int arg2 );

      类型断言:

    Assert.IsInstanceOfType( Type expected, object actual );

      条件测试:

    Assert.IsTrue( bool condition );
    Assert.IsFalse( bool condition);
    Assert.IsNull( object anObject );
    Assert.IsNotNull( object anObject );
    Assert.IsNaN( double aDouble );
    Assert.IsEmpty( string aString );
    Assert.IsNotEmpty( string aString );
    Assert.IsEmpty( ICollection collection );
    Assert.IsNotEmpty( ICollection collection );

     字符串断言(StringAssert):提供了许多检验字符串值的有用的方法

    StringAssert.Contains( string expected, string actual );
    StringAssert.StartsWith( string expected, string actual );
    StringAssert.EndsWith( string expected, string actual );
    StringAssert.AreEqualIgnoringCase( string expected, string actual );

  • 相关阅读:
    【数学】多项式取 ln
    【数学】多项式求逆
    【模拟 + 栈】AcWing 151. 表达式计算4
    Unity3D开发入门教程(一)——搭建开发环境
    Unity3D开发入门教程(三)——添加启动脚本
    Unity3D开发入门教程(二)—— Lua入门
    Unity3D开发入门教程(四)——用Lua实现组件
    哈希表
    邻接表
    并查集
  • 原文地址:https://www.cnblogs.com/tianguook/p/3970546.html
Copyright © 2011-2022 走看看