當我僅限於EF 3.5實體時編寫單元測試的最佳方式是什麼?測試實體框架3.5
回答
如果你想自己單元測試你的查詢,我強烈推薦你設置一個測試數據庫並用真實數據測試它們。使用IObjectSet<T>
爲了替代內存中的集合以便單元測試運行是一個糟糕的想法。在linq-to-objects之下運行linq查詢的方式,以及如何將其解析爲T-SQL命令,即如何處理空值之間存在差異。例如,
db.People.Where(p => p.AccountNum == variable);
如果這是使用LINQ到對象(如你的埋入在爲IObjectSet<T>
的單元測試的替代設置一些內存對象),然後將完美運行。然而,如果你正在運行的是針對數據庫,那麼如果變量爲空,您的查詢將打破,因爲
WHERE [peopleTableAlias].[AccountNum] = @param1
查詢,將會產生與@參數1是空,這將是毫無價值的,因爲你真的需要生成一個IS NULL查詢。
然而,如果你想測試你的業務邏輯,它調用你的EF DataContext的,那麼我會說包裹起來這些查詢到數據訪問對象,標記你的方法是虛擬的,注射稱需要它們的地方的DAO ,在你的單元測試中,用手動模擬替代那些方法來爲測試返回所需的值,或者用你最喜歡的模擬框架(即Rhino)做同樣的事情。
EDIT - 對不起,IObjectSet<T>
僅限於EF4,顯然你沒有。但由於使用該單元測試是我推薦的而不是,所以答案仍然適用。
我要測試的課程是DAL。所以建立一個測試分貝似乎是正確的路要走。你有沒有關於使用測試數據庫或我需要注意的任何好的提示? – Ols1 2011-02-16 16:07:17
- 1. 實體框架(.NET 3.5)
- 2. 單元測試實體框架
- 3. 實體框架遷移集成測試
- 4. 使用燈具測試實體框架
- 5. 實體框架6和單元測試
- 6. 實體框架4.0單元測試
- 7. 實體框架和負載測試
- 8. 單元測試和實體框架
- 9. 單元測試實體框架庫
- 10. 單元測試實體框架驗證
- 11. 測試實體框架模型
- 12. 實體框架5.0基準測試
- 13. 測試實體框架查找方法
- 14. 實體框架3.5和預先加載
- 15. 下載.NET 3.5的實體框架
- 16. 比較外鍵的實體框架3.5
- 17. 實體框架(3.5) - 拒絕更改
- 18. 動態where子句實體框架3.5
- 19. .NET 3.5 SP1和ADo.NET實體框架
- 20. 樞軸在c#實體框架3.5
- 21. 實體框架降級到3.5
- 22. 左連接實體框架3.5
- 23. 用SQL Compact 3.5插入實體框架
- 24. 實體框架3.5「查找」方法?
- 25. 從實體框架3.5移到4.0
- 26. .NET Framework 3.5的單元測試框架?
- 27. 具有ms單元測試框架的單元測試實體框架
- 28. 測試實體實體框架6單元測試枚舉後消失
- 29. 導出實體框架4數據模型到實體框架3.5
- 30. 測試框架說實體沒有定義鍵內置實體
你想要單元測試什麼?你能提供更多的信息,說明你正在嘗試做什麼或有什麼問題? – Jeff 2011-02-16 14:43:04