使用MS Test做单元测试
聲明:本篇博客翻譯自:http://www.c-sharpcorner.com/article/unit-testing-with-ms-tests-in-c-sharp/
寫在翻譯之前:
依然清晰的記得剛工作的第一個(gè)項(xiàng)目中,在完成一個(gè)功能模塊開發(fā)后,師傅讓我把代碼做一下單元測(cè)試。當(dāng)時(shí)一臉“懵懂”。心里的疑惑油然而生,測(cè)試不應(yīng)該是測(cè)試人員做的嗎?然后就寫了一些測(cè)試用例把功能簡單過了一遍。過了幾天后,師傅問我單元測(cè)試完成了嗎?我很自信的告訴師傅搞定了。師傅讓我把單元測(cè)試的代碼提交到服務(wù)器上,他想Review一下!我更加疑惑了,對(duì)師傅說,單元測(cè)試還要寫代碼呀?:(
前言:
很多初級(jí)開發(fā)工程師都會(huì)有這樣的困惑:誰應(yīng)該來做單元測(cè)試。單元測(cè)試應(yīng)該是由開發(fā)者來完成的。
單元測(cè)試:
通過一些代碼來測(cè)試一個(gè)方法/函數(shù)的行為。
為什么需要單元測(cè)試:
-
通常情況下,一個(gè)軟件項(xiàng)目會(huì)長期運(yùn)行/維護(hù)/更新,這個(gè)時(shí)間至少也會(huì)有5年的時(shí)間;
-
在這期間,維護(hù)這個(gè)程序非常重要;
-
任何一個(gè)代碼的改動(dòng)都有可能會(huì)影響程序的其他功能模塊;
-
因此在更新程序之間,會(huì)需要做大量的回歸測(cè)試(Regression Testing),這將花費(fèi)測(cè)試工程師大量的時(shí)間。
想象一下如果代碼修改需要非常頻繁,那么花費(fèi)在回歸測(cè)試上的精力會(huì)非常多,同樣的,也會(huì)有很大的幾率捕捉到功能回退(修改缺陷)的問題。
回歸測(cè)試:
回歸測(cè)試是確保當(dāng)增加了新的修改后,老的功能依舊可以正常使用。
單元測(cè)試:
-
單元測(cè)試將會(huì)最小化回歸測(cè)試的范圍:
-
每一個(gè)方法/函數(shù)都會(huì)被一系列的測(cè)試方法覆蓋,這些測(cè)試方法將測(cè)試真實(shí)方法的功能;
-
測(cè)試方法會(huì)檢查下面的場(chǎng)景/行為:
-
成功/正常流程
-
失敗
-
異常/錯(cuò)誤處理
-
-
一個(gè)方法可能需要多個(gè)測(cè)試方法,這取決于測(cè)試方法的復(fù)雜度;
-
在代碼交付之前,開發(fā)者需要確保所有的測(cè)試方法均運(yùn)行通過。
TDD:
?
在寫產(chǎn)品代碼之前先寫單元測(cè)試代碼,然后使用產(chǎn)品代碼來填充/覆蓋測(cè)試代碼。最終使測(cè)試代碼都運(yùn)行通過。
編寫測(cè)試用例:
在C#中有2個(gè)測(cè)試框架
-
MS?Test
-
NUnit
我們使用AAA模式來編寫單元測(cè)試
安排所以必須的前置條件和輸入;
在測(cè)試代碼中操作被測(cè)試對(duì)象和方法;
斷言期待的結(jié)果;
右擊解決方案瀏覽器,選擇Unit?Test?Project并添加:
Employee類:
| | public?class?Employee { ????public?string?GetName(string?firstName,?string?lastName) ????{ ????????return?string.Concat(firstName,?" ", lastName); ????} } |
?單元測(cè)試類:
| | [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); ????} } |
?希望上述內(nèi)容能夠幫助你對(duì)單元測(cè)試有一個(gè)概念性的認(rèn)識(shí)。
原文:http://www.cnblogs.com/yang-fei/p/7858078.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的使用MS Test做单元测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 协作更进一步:微软隆重介绍Visual
- 下一篇: 如果不懂Service mesh,就不要