2014-04-09 40 views
0

在我的項目中有很多靜態方法,並且所有內容都會碰到數據庫。我應該爲項目編寫單元測試,但經常遇到,因爲所有的方法都是靜態的,而且他們正在打DB。有什麼辦法可以克服這個問題嗎?對不起,在問題中是抽象的,但我關心的是如何編寫靜態方法和那些命中DB的單元測試。當方法是靜態的,並且在我的項目中,一個方法正在調用同一個類中的其他方法時,MOQ沒有用處。所以在這種情況下,我不能最小化內部方法,因爲兩者都在同一個類中。編寫靜態方法的單元測試

+5

聽起來好像你正在編寫產品代碼後試圖編寫單元測試。這本書[與遺留代碼有效地工作](http://amzn.to/Vzxdhd)處理這個問題。 –

回答

4

我目前所在的項目比您描述的要糟糕得多。這是一個不可測試系統的藍圖。我認爲有幾個選項,但這一切都取決於你的情況。

寫入集成測試,命中數據庫,並測試多個組件。我知道這並不理想,但至少對你的工作有信心。然後嘗試一次一小步地重構你的代碼(確保採取嬰兒步驟),並圍繞該代碼編寫單元測試。確保您的集成測試繼續通過。如果語義改變,你仍然可以重構你的代際間類型測試。

這可能不像我說的那麼容易,而且需要時間。這就是爲什麼我說這取決於你的情況。

另一種選擇是(我知道很多人使用遺留代碼這樣做)使用其中一種昂貴的隔離框架,例如Isolator,MS Fakes或許可以僞裝那些不可測試的依賴關係。一旦編寫了這些測試,您可以考慮重新考慮代碼以使其更易於測試。

+1

是的,目前我只寫集成測試。我瞭解你的解決方案。我不確定它能幫助我的情況有多遠,但會嘗試實施它們。 – Wilson

相關問題