Dot-Net
模擬框架的新手
我正在嘗試以單個開發人員的身份進行測試驅動開發(可能將團隊增加到四個)。我有使用 NUnit 進行單元測試的有限擴展經驗。
我已經開發這個系統幾年了(VB.NET)。我之前的開發人員在該系統上工作了三年,他偏愛 Martin Fowlers 事務腳本方法,這意味著存在具有大型單體功能的大型類,幾乎沒有考慮設計/可重用性等。
我研究了一些可用於 Nunit 的 Mocking 框架,我相信我唯一的選擇是商業產品 TypeMock(RhinoMock vs. TypeMock vs. NUnit 的 Mocking?),因為它允許您模擬非抽象且沒有介面的類. 這個對嗎?
我在這裡閱讀了一些文章,表明情況並非如此。因此提出這個問題的原因。我可以為事務腳本/單片系統使用任何免費的模擬框架嗎?
簡答
如果您沒有抽像類或介面,那麼您將不得不使用TypeMock或Microsoft 的Fakes 之類的產品。
長答案
**不要走這條路。**TDD 的主要優點是它迫使您擁有鬆散耦合的程式碼和清晰的抽象。沒有它,那麼你的測試將變得非常難以設置和維護。
**你真正需要做的是重構。**慢慢地。這是我的建議。
- 首先找到一個難以測試的組件,並確定所有依賴項。
- 開始從這些類中提取介面,然後使依賴類依賴於介面。
- 通過建構子或屬性使它們“可注入”來反轉依賴關係。
- 開始編寫測試來描述該類的行為,模擬依賴關係。
- 沖洗重複,直到您可以開始馴服您的程式碼庫。
沒有介面的模擬類對於您無法控制的程式碼很有用。但這仍然很困難,並且隨著時間的推移會變得笨拙和復雜。
讓您的測試與您交談。**如果您的測試難以使用或設置複雜,則意味著您的程式碼需要重構。**不要忽視這些回饋。