2013-06-27 93 views
0

Q1:什麼時候運行單元測試很理想?它應該在每次去調試應用程序之前運行嗎?他們應該在我對svn進行更改之前運行嗎?我認爲如果一個應用程序只有幾個單元測試,應該在每次應用程序即將調試時運行。但讓我們說,我們可能需要一些時間才能完成的數百個單元測試,不知道這是否理想。我認爲在提交或部署之前運行它們會更好。什麼時候執行我的單元測試,爲什麼使用Moq

Q2:在我的應用程序中使用存儲庫模式與服務層。我已經做了一些關於如何在服務調用存儲庫並且存儲庫查詢數據庫時測試服務的研究。所以爲了使它成爲真正的單元測試而不是集成測試,我必須找到一種測試方法,而不必接觸數據庫。我發現人們使用Moq來模擬他們的存儲庫。這裏是我遇到問題的地方,對我來說,似乎如果我嘲笑一個存儲庫,那麼我正在改變這個方法如何工作的行爲,對我來說似乎是一個毫無意義的單元測試。它似乎並沒有測試您的代碼。我完全錯了嗎?感謝您的任何建議。

回答

1

讓我拍一下。 A1:當你重構現有代碼時,你應該執行相應的單元測試(不是全部),看看你的更改是否有任何內容被破壞。對於新功能,您應該使用TDD並行實施新的單元測試。你不應該由你自己執行所有的單元測試,而應該使用或依賴持續集成。 A2:我有和你一樣的意見。但是現在,我確信需要對服務層進行單元測試。無論使用單元測試可以涵蓋什麼,都應該包括在內。此時,您的服務的核心可能僅僅是存儲庫的代理,但是服務將會發展。這些服務負責參數驗證,授權,日誌記錄,交易,批量支持API等。然後,它不僅是數據訪問,還有更多的事情。如果我在你的位置上,我會通過嘲笑存儲庫去進行服務的單元測試。有時候,服務在存儲庫之上提供了便利的方法。

希望它對你有一些幫助。

1

A1。在對代碼進行更改時,運行單元測試的頻率越高,得到的反饋信息就越快,他們是否會影響寫入的行爲,因此越多越好!單元測試應該非常快,運行數百次最多隻需要幾分鐘,但它可能是值得研究infinitest(如果使用java,我期望替代品將存在.net等),它是一個插件eclipse並在eclipse構建項目時自動運行你的單元測試。只運行自上次運行後受到影響的測試足夠聰明,例如,如果您更新了測試,或者更新了某些單元測試涵蓋的「應用程序」代碼,則將執行特定的測試。

A2。單元測試將涵蓋許多不同的場景,這些場景會多次調用您的服務+道數,使用「真實」服務會使得很難保證每次調用的結果(並且爲每個測試設置數據可能會很痛苦),但是結果可能會很慢。單元測試嘲笑這些服務並通過集成測試獨立測試它通常會更好。

相關問題