使用MS Test做單元測試


聲明:本篇博客翻譯自:http://www.c-sharpcorner.com/article/unit-testing-with-ms-tests-in-c-sharp/

寫在翻譯之前:

依然清晰的記得剛工作的第一個項目中,在完成一個功能模塊開發后,師傅讓我把代碼做一下單元測試。當時一臉“懵懂”。心里的疑惑油然而生,測試不應該是測試人員做的嗎?然后就寫了一些測試用例把功能簡單過了一遍。過了幾天后,師傅問我單元測試完成了嗎?我很自信的告訴師傅搞定了。師傅讓我把單元測試的代碼提交到服務器上,他想Review一下!我更加疑惑了,對師傅說,單元測試還要寫代碼呀?:(

前言:

很多初級開發工程師都會有這樣的困惑:誰應該來做單元測試。單元測試應該是由開發者來完成的。

單元測試:

通過一些代碼來測試一個方法/函數的行為。

為什么需要單元測試:

  • 通常情況下,一個軟件項目會長期運行/維護/更新,這個時間至少也會有5年的時間;
  • 在這期間,維護這個程序非常重要;
  • 任何一個代碼的改動都有可能會影響程序的其他功能模塊;
  • 因此在更新程序之間,會需要做大量的回歸測試(Regression Testing),這將花費測試工程師大量的時間。

想象一下如果代碼修改需要非常頻繁,那么花費在回歸測試上的精力會非常多,同樣的,也會有很大的幾率捕捉到功能回退(修改缺陷)的問題。

回歸測試:

回歸測試是確保當增加了新的修改后,老的功能依舊可以正常使用。

單元測試:

  • 單元測試將會最小化回歸測試的范圍:
  • 每一個方法/函數都會被一系列的測試方法覆蓋,這些測試方法將測試真實方法的功能;
  • 測試方法會檢查下面的場景/行為:
    • 成功/正常流程
    • 失敗
    • 異常/錯誤處理
  • 一個方法可能需要多個測試方法,這取決於測試方法的復雜度;
  • 在代碼交付之前,開發者需要確保所有的測試方法均運行通過

TDD:

 

在寫產品代碼之前先寫單元測試代碼,然后使用產品代碼來填充/覆蓋測試代碼。最終使測試代碼都運行通過。

編寫測試用例:

在C#中有2個測試框架

我們使用AAA模式來編寫單元測試

  1. 安排所以必須的前置條件和輸入;
  2. 在測試代碼中操作被測試對象和方法;
  3. 斷言期待的結果;

右擊解決方案瀏覽器,選擇Unit Test Project並添加:

Employee類:

    public class Employee
    {
        public string GetName(string firstName, string lastName)
        {
            return string.Concat(firstName, " ", lastName);
        }
    }

 單元測試類:

    [TestClass]
    public class EmpoyeeFunctionalTest
    {
        [TestMethod]
        public void GetNameTest()
        {
            // Arrange
            Employee employee = new Employee();
            string firstName = "Jimmy";
            string lastName = "Yang";
            string expacted = "Jimmy Yang";
            string actual = string.Empty;

            // Act
            actual = employee.GetName(firstName, lastName);

            // Assert
            Assert.AreEqual(expacted, actual);
        }
    }

 希望上述內容能夠幫助你對單元測試有一個概念性的認識。

感謝您的閱讀!翻譯的不到位之處還望指正。謝謝~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM