我必須測試在MyMobileApp.MyService.Module中實現的IoC服務。我應該如何正確測試IoC服務?
在我的單元測試項目MyMobileApp.MyService.Module.Tests對IOC模塊MyMobileApp.MyService.Module引用的那一刻
CFTestRunner用於調試和Visual Studio的測試運行,也可用於與運行測試輸出到GUI窗口(???)
IMHO這種架構也有缺點:
- 服務必須在[TestInitialize]手動初始化:
try { var module = new Module(); // Drawback: what if 2 services should be used? module.AddServices(); } catch (Exception) // Services must be added only once { // In TestInitialize // ClassInitilaize method is not executed if unit test is running under CFTestRunner??? }
this.myService = RootWorkItem.Services.Get();
- 測試另一個服務實現我應該改變參考,並重新編譯測試項目
所以我有一些改進的想法:
是不是很好用可測試版ProfileCatalog允許IoC容器自動添加測試服務?這個ProfileCatalog如何正確部署在devcie/emulator上?
在測試類中使用注入服務是否好(如果可能的話)?
而且在那裏我能找到的樣本代碼/項目(S)具有良好的測試模式/文章 - 我的意思是測試的IoC服務
你看過Moock這樣的Mocking框架嗎? –
.NET CF不支持生成代理所需的Reflection.Emit .. – hellboy
如何將它們自己剔除?你的問題似乎與將測試中的實際代碼注入依賴關係有關......在單元測試中你不應該這樣做,因爲它們會導致測試需要很長時間才能執行。這更多的是在構建時進行的集成測試。 –