回答
如果使用EF,則不必編寫測試以查看EF是否正確保存數據。因此,您不需要真正的數據庫進行測試,您需要測試的只是您的代碼邏輯,而內存數據庫在此情況下最適合,它有助於區分疑慮,靈活,易於運行且運行速度快於使用真實的數據庫。
此外,運行與真實數據庫的集成測試相當複雜。它需要一些配置(連接字符串,刪除並重新創建數據庫...)在運行之前可能需要一些時間。由於配置錯誤(例如,在測試期間使用共享數據庫),測試可能會失敗,調試需要時間。
無論您是針對內存數據庫還是實際數據庫進行測試,您都沒有進行單元測試 - 這兩項測試都是集成測試。兩者實際上都會測試某種形式的連接和提供者實現。
我會看到內存數據庫使用VS一個真正的數據庫的主要好處是
- 權限 - 使用一個真正的數據庫通常需要的權限和連通性的更高的水平。像文件寫入權限或訪問數據庫服務器一樣。內存數據庫可能不需要相同級別的權限。
- 速度 - 這是快速旋轉起來,比一個實際的數據庫
根據您的模式(即,如果您使用的一個工作單元)推倒的內存數據庫,它很可能是你甚至不需要數據庫來測試您的存儲庫。
是的我使用工作模式的單位。所以我不需要一個真正的或內存中的數據庫。請澄清一下。 – Elisabeth 2013-02-18 09:08:25
你可以抽象你的DbContext,並嘗試模擬IQueryable在http://stackoverflow.com/questions/13332002/how-to-mock-the-limitations-of-entityframeworks-implementation-of-iqueryable – 2013-02-18 10:00:11
但是,我會最終在你發佈我的鏈接中。鏈接說只做單元測試是不夠的。因此,我想首先進行整合測試,這對我來說足夠了。 – Elisabeth 2013-02-18 10:25:38
- 1. 使用實體框架對空方法進行單元測試
- 2. 實體框架遷移集成測試
- 3. 使用Spring和Jersey測試框架進行單元測試
- 4. 使用Jersey 1.17測試框架進行單元測試
- 5. 使用Visual Studio測試框架進行C++單元測試
- 6. 單元測試在什麼時候成爲集成測試?
- 7. 使用Specflow場景進行集成測試和單元測試
- 8. 具有ms單元測試框架的單元測試實體框架
- 9. webdriver在進行集成測試時用於測試框架java
- 10. 單元測試實體框架
- 11. 實體框架6和單元測試
- 12. 實體框架4.0單元測試
- 13. 單元測試和實體框架
- 14. 單元測試實體框架庫
- 15. 單元測試實體框架驗證
- 16. 使用FakeItEasy針對嵌套實體框架成員進行單元測試
- 17. 爲什麼進行單元測試和功能測試
- 18. 單元測試框架:在新進程中運行測試
- 19. 集成測試/單元測試:做了太多集成測試?
- 20. 單元測試使用茉莉花單元測試框架node.js
- 21. 測試實體實體框架6單元測試枚舉後消失
- 22. 運行測試,而測試框架
- 23. 什麼是生成單元測試框架?
- 24. 當進行單元測試以及何時集成測試
- 25. 實體框架集成測試DropCreateDatabaseAlways不清除測試之間的數據庫
- 26. Javascript集成測試框架
- 27. 集成測試框架?
- 28. 測試實體框架3.5
- 29. 使用MSTest分別運行單元測試和集成測試
- 30. 集成測試與單元測試
給了我一個-1的傢伙。我已經第一次讀到這個話題,並沒有找到提供的鏈接,所以爲什麼這個問題值得懲罰呢? – Elisabeth 2013-02-18 10:23:43
輕鬆解決:) +1因爲我同意,很好的問題,即使它是重複的... – bas 2013-02-18 19:29:12