我有Web應用程序,有2套服務。一套是像UserService這樣的業務服務,另一套是像EmailService這樣的實用程序服務。業務服務如何連接到公用服務是通過NServiceBus。如何在這種情況下執行集成測試?我現在所做的是,我打破了2個單元測試的集成測試。首先是測試業務服務,然後模擬/驗證NServiceBus發送。第二次單元測試在公用事業服務上,然後模擬/驗證電子郵件發送。如你所知,這並不是最理想的。目前我們有兩個NServiceBus實例 - 一個作爲客戶端,另一個作爲服務器(服務器增加了處理程序)。這項工作正常,非測試模式(因爲客戶端是在IIS的環境下,服務器是一個獨立的應用程序),但當我嘗試在測試中這樣做,似乎我不能運行兩個實例?有什麼建議?你如何使用NServiceBus執行集成測試?
0
A
回答
2
這聽起來像你正在做單元測試正確,嘲笑NServiceBus上的外部依賴。清楚的是,我對單元測試的定義是,他們不會在代碼之外做任何事情(比如說使用MSMQ)。對於你的集成測試,你應該能夠以非常簡單的方式逃脫,證明你能夠將消息從一個系統傳遞到另一個系統,並且可能獲得預期的最終結果。要設置它,實際上可以從測試夾具的設置方法中啓動NServiceBus客戶機/服務器(並在拆卸過程中處理它們)。無論它們是EXE還是在IIS中運行都無關緊要 - 即使這意味着調用Process.Start()或類似的東西,也應該能夠以編程方式在測試中啓動/停止它們。或者,如果集成測試作爲持續集成設置的一部分在構建服務器上運行,則構建腳本可確保在啓動測試之前正確運行流程,這可能會導致更加可重複和更快速結果。使用TeamCity和MSBuild或NAnt的組合很容易做到這一點。
相關問題
- 1. 如何使用Node.js執行集成測試?
- 2. 如何使用Jasmine執行nodeJS集成測試?
- 3. 如何使用Visual Studio訂購執行方法以執行集成測試?
- 4. Jacoco Sling Junit集成測試執行
- 5. Java執行服務集成測試
- 6. 測試Bus.Send使用NServiceBus
- 7. 使用持續集成服務器執行Django單元測試
- 8. 使用NUnit與ASP.NET WebApi控制器執行集成測試
- 9. 使用JSON輸出執行集成測試時出錯
- 10. 你如何告訴rails使用rspec和webrat生成集成測試?
- 11. 使用Redis進行集成測試
- 12. 使用Capybara進行AJAX集成測試
- 13. 使用konacha進行Emberjs集成測試
- 14. 使用AuthorizeAttribute進行MVC集成測試
- 15. FeignClient集成測試使用測試雙
- 16. 如何在PHP中執行集成測試?
- 17. 如何自動執行性能測試並與CI集成?
- 18. 如何爲Python腳本執行集成測試?
- 19. 如何運行集成測試?
- 20. 如何使用一致的數據對Oracle UCM執行集成測試?
- 21. 執行javascript時,Watin集成測試無法執行System.UnauthorizedAccessException
- 22. 如何在不運行所有測試的情況下使用Visual Studio 2012執行系統或集成測試?
- 23. 如何執行使用測試::
- 24. 如何使用request.post執行django測試?
- 25. 如何使用Ant執行JUnit測試的子集?
- 26. 如何重新使用集成測試的單元測試
- 27. 如何使用Rapidminer測試測試集?
- 28. 與nservicebus集成
- 29. 如何將monkeyrunner集成測試與emma覆蓋測試集成?
- 30. 如何做集成測試?
嗯,我不同意他是「單元測試正確」。不要嘲笑你不擁有的東西。他需要模擬NServiceBus這一事實表明,他可能沒有正確地抽象出對公共汽車的依賴。換句話說,高層次的策略對象依賴於低層次的細節。他應該能夠單獨測試這些物體,也許可以使用間諜來代替公交車,以便再次單獨觀察物體的期望行爲。 (接下來) – fourpastmidnight 2016-02-19 14:56:03
(續上)然後,正如他正確地觀察到的,他還應該進行集成測試,以測試所有參與者(包括總線)之間的交互是否按預期工作(例如,消息正在發送/如預期通過公共汽車由其各自的對象接收)。 – fourpastmidnight 2016-02-19 14:56:43