首先,給出MSDN相關地址:http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.TestTools.UnitTesting.aspx (類庫)
Verifying Code by Using Unit Tests (介紹)
我的IdleTest原始碼地址:http://idletest.codeplex.com/
VS2012單元測試的主要類:Assert、StringAssert、CollectionAssert,具體可參照上述連結的MSDN介紹。
單元測試一直都想接觸,但是礙於沒有那樣的工作環境,故只能由自己在業餘時間去做這個事,整個過程下來,最大的感觸是我寫程式碼的質量原來可以這麼好,在此之前,通常我編寫的程式碼有很大一部分在程式執行前都是有bug的,但是通過單元測試,基本上在程式執行之前(除錯階段)就扼殺了這些bug的大多數,單元測試程式碼有問題除外,這也是我堅持單元測試的最大動力,其次就是單元測試可以促使我在編碼中努力去遵循SOLID,提別是單一職責原則。
我個人在學習單元測試中基本都寫成了部落格,便於記錄,以下為目錄。
目錄:
1.《在Visual Studio 2012使用單元測試》、
2.《VS2012 單元測試之泛型類(Generics Unit Test)》、
3.《VS2012 Unit Test —— 我對介面進行單元測試使用的技巧》
4.《VS2012 Unit Test(Void, Action, Func) —— 對無返回值、使用Action或Func作為引數、多過載的方法進行單元測試》
5.《VS2012 Unit Test——Microsoft Fakes入門》
6.《VS2012 Unit Test —— 我對IdleTest庫動的大手術以及對Xml相關操作進行測試的方式》
插曲:前段時間與某個公司的開發經理(反正是管理開發的)聊過,問我最近在搞什麼技術,答曰小酌單元測試,其反問”要改當測試人員了啊“。由此可見還是很多做開發的誤以為單元測試應由測試人員來做,單元測試應該是100%由開發人員完成,甚至我們碼農還要編寫整合測試程式碼。
單元測試只是TDD的一部分,其他的例如還有整合測試等。而TDD不但是編碼的事,還是測試的事,更是設計的事,即為整個專案團隊的事,所以絕對不是說用就用的,我這也算是發發牢騷罷了,發完還是要回頭去幹改bug的活。
以下摘自《C#測試驅動開發》。
TDD優點(簡言之就是使設計更佳,缺陷更少):
1.一開始就保證程式碼的質量;
2.使開發人員更遵循SOLID原則;
3.確保程式碼與業務需求之間的高度一致性;
4.TDD鼓勵建立更簡單、針對性更強的庫和API;
5.鼓勵與業務使用者多溝通;
6.有助於從系統中清除那些沒有用到的程式碼;
7.提供了內建迴歸測試;
8.終止了遞迴錯誤的出現
9.可以得到開放的、可擴充套件的、靈活的體系結構。
單元測試框架:NUnit、MSTest(上述文中所用的)、MbUnit、xUnit。
模擬框架:Fakes(MSTest的模擬框架)、Moq、Rhino Mocks、Type Mock
依賴注入框架:Structure Map、Unity、Windsor、Autofac
能力有限,錯漏難免,歡迎批評指正!!
參考資料:MSDN、C#測試驅動開發(Professional Test Driven Development with C#)