我在嘗試熟悉單元測試。我寫了一個小應用程序,用於解析來自Internet的數據並將其存儲到數據庫中。爲此,我使用實體框架。使用實體框架對空方法進行單元測試
由於許多方法都是無效的方法,如
public void UpdateSiteValue(Site site, ObjectContext context)
此方法可用於在DB更新某些值。所以我基本上想知道如何從單元測試的角度來看待這個問題。也許我可以嘲笑對象的上下文?
希望得到任何輸入。
我在嘗試熟悉單元測試。我寫了一個小應用程序,用於解析來自Internet的數據並將其存儲到數據庫中。爲此,我使用實體框架。使用實體框架對空方法進行單元測試
由於許多方法都是無效的方法,如
public void UpdateSiteValue(Site site, ObjectContext context)
此方法可用於在DB更新某些值。所以我基本上想知道如何從單元測試的角度來看待這個問題。也許我可以嘲笑對象的上下文?
希望得到任何輸入。
這取決於您正在測試的內容。
由於您返回的是void,因此您無法測試函數的返回值 - 那麼您是否想要測試您的方法是否會真正在數據庫中進行更改?如果是這樣,那麼嘲笑你的上下文不是最好的解決方案,因爲你沒有測試實際的代碼。 Ladislav Mrnka對此做了a great post。你能把你的測試包裝在一個事務範圍中,然後做一次回滾? Id會增加,但至少你會測試一切。另外,如果你想測試你的方法是否正確,直到你到達數據庫層,有幾種方法可以解決這個問題。建議使用存儲庫模式的東西很多,這樣在測試中就不會依賴EF。 Truewill也對此做了a good post。他還鏈接到一個MSDN article關於此,使用內存ObjectContext,您可能會發現相關。
這裏有一些關於單位vs功能vs集成測試的更多general reading可以幫助。
測試數據是否已經保存到數據庫是一個集成測試,而不是單元測試。 – 2012-09-05 15:07:00