程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 實現VS2010整合NUnit進行單元測試,vs2010nunit

實現VS2010整合NUnit進行單元測試,vs2010nunit

編輯:C#入門知識

實現VS2010整合NUnit進行單元測試,vs2010nunit


1、下載安裝NUnit(最新win版本為NUnit.3.2.1.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 \C:\Program Files\NUnit.org\framework\3.2.1.0\net-4.0\nunit.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)); } } } View Code

 

編譯控制台項目,點擊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 );

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved