5分钟实现VS2010整合NUnit进行单元测试

本文转载自:http://www.cnblogs.com/jeffwongishandsome/archive/2012/03/18/2404845.html

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
    {
        [Test]
        public void AddTest()
        {
            var calc = new Calculator();
            var result = calc.Add(1, 1);
            Assert.AreEqual(2, result);
        }

        [Test]
        public void AddTestFailure()
        {
            var calc = new Calculator();
            var result = calc.Add(1, 1);
            Assert.AreEqual(10, result);
        }

        [Test]
        public void SingtonTest1()
        {
            var calc = Calculator.GetInstance();
            Assert.IsNull(calc);
        }

        [Test]
        public void SingtonTest2()
        {
            var calc1 = Calculator.GetInstance();
            var calc2 = Calculator.GetInstance();
            Assert.IsTrue(object.Equals(calc1, calc2));
        }
    }
}

编译控制台项目,点击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

原文地址:https://www.cnblogs.com/wpcnblog/p/6042313.html