程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Visual Studio 2012使用NUnit單元測試實踐01,安裝NUnit並使用,nunit單元測試

Visual Studio 2012使用NUnit單元測試實踐01,安裝NUnit並使用,nunit單元測試

編輯:C#入門知識

Visual Studio 2012使用NUnit單元測試實踐01,安裝NUnit並使用,nunit單元測試



 

在Visual Studio 2012中,默認使用Microsoft自帶的MS-Test測試框架。但,Visual Studio同樣允許使用第三方測試框架,比如NUnit,xUnit,MbUnit,等等。本篇體驗使用NUnit進行單元測試。


在Visual Studio中創建一個解決方案。

 

在解決方案下添加一個名稱為"LogAn"的類庫。

 

創建名稱為LogAnalyzer的類,編寫如下:

 

namespace LogAn
{
    public class LogAnalyzer
    {
        public bool IsValidLogFileName(string fileName)
        {
            if (!fileName.EndsWith(".SLF"))
            {
                return false;
            }
            return true;
        }
    }
}

 

生成"LogAn"的類庫項目。


在解決方案下添加一個"單元測試項目"。

 

接下來需要安裝"NUnit Test Adapter", "NUnit Test Adapter"是介於NUnit和Visual Studio之間的一個適配器。依次點擊"工具"、"擴展和更新",從中搜索並安裝"NUnit Test Adapter"。

 

安裝完畢,需要重啟Visual Studio 2012。

 

在單元測試項目下,通過NuGet安裝NUnit。

 

在單元測試項目下引用"LogAn"的類庫。

 

編寫一個測試類和測試方法,單元測試的命名規則有一定的約定,比如說:類名_目的_期望的結果,遵循這個命名規則:

Order_NumberOfOrders_GreaterThanZero_Success

 

以下是測試類和測試方法:

 

using LogAn;
using NUnit.Framework;
namespace MyFirstTestProject
{
    [TestFixture]
    public class LogAnalyzerTests
    {
        [Test]
        public void IsValidFileName_validFile_ReturnsTrue()
        {
            //Arrange
            LogAnalyzer analyzer = new LogAnalyzer();
            //Act
            bool result = analyzer.IsValidLogFileName("whatever.slf");
            //Assert
            Assert.IsTrue(result,"包含正確的後綴名");
        }
    }
}

 

生成單元測試項目。

 

點擊Visual Studio 2012左上角的"測試資源管理器",點擊"運行"。

 

顯示未通過測試。

 

修改類庫中的代碼如下:

 

if (!fileName.ToLower().EndsWith(".slf"))

 

並重新生成類庫。

 

再次運行單元測試項目,顯示通過。

 

在單元測試中,如果一個測試中遺留了一些數據、狀態或對象實例,可能會導致其它測試的失敗。而定位測試之間的依賴性也是很困難的。解決辦法是讓所有測試之間沒有任何依賴關系。NUnit為此提供了[Setup]和[TearDown]這兩個特性,旨在某個測試方法執行之前做一些初始化工作,執行之後做一些清理工作。於是,現在測試代碼可以修改成如下:

 

using LogAn;
using NUnit.Framework;
namespace MyFirstTestProject
{
    [TestFixture]
    public class LogAnalyzerTests
    {
        private LogAnalyzer m_anylyzer = null;
        [SetUp]
        public void Setup()
        {
            m_anylyzer = new LogAnalyzer();
        }
        [Test]
        public void IsValidFileName_validFile_ReturnsTrue()
        {
            //Act
            bool result = m_anylyzer.IsValidLogFileName("whatever.slf");
            //Assert
            Assert.IsTrue(result,"包含正確的後綴名");
        }
        [Test]
        public void IsValidFileName_validFileUpperCased_ReturnsTrue()
        {
            bool result = m_anylyzer.IsValidLogFileName("whatever.SLF");
            Assert.IsTrue(result, "包含正確的後綴名");
        }
        [TearDown]
        public void TearDown()
        {
            m_anylyzer = null;
        }
    }
}

 

參考資料:

 

.NET單元測試藝術,等等。

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