使用MS Test作單元測試

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

寫在翻譯以前:服務器

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

前言:

不少初級開發工程師都會有這樣的困惑:誰應該來作單元測試。單元測試應該是由開發者來完成的。函數

單元測試:

經過一些代碼來測試一個方法/函數的行爲。單元測試

爲何須要單元測試:

  • 一般狀況下,一個軟件項目會長期運行/維護/更新,這個時間至少也會有5年的時間;
  • 在這期間,維護這個程序很是重要;
  • 任何一個代碼的改動都有可能會影響程序的其餘功能模塊;
  • 所以在更新程序之間,會須要作大量的迴歸測試(Regression Testing),這將花費測試工程師大量的時間。

想象一下若是代碼修改須要很是頻繁,那麼花費在迴歸測試上的精力會很是多,一樣的,也會有很大的概率捕捉到功能回退(修改缺陷)的問題。測試

迴歸測試:翻譯

迴歸測試是確保當增長了新的修改後,老的功能依舊能夠正常使用。對象

單元測試:blog

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

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);
        }
    }

 但願上述內容可以幫助你對單元測試有一個概念性的認識。

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

相關文章
相關標籤/搜索