我有Web应用程序,有2套服务。一套是像UserService这样的业务服务,另一套是像EmailService这样的实用程序服务。业务服务如何连接到公用服务是通过NServiceBus。如何在这种情况下执行集成测试?我现在所做的是,我打破了2个单元测试的集成测试。首先是测试业务服务,然后模拟/验证NServiceBus发送。第二次单元测试在公用事业服务上,然后模拟/验证电子邮件发送。如你所知,这并不是最理想的。目前我们有两个NServiceBus实例 - 一个作为客户端,另一个作为服务器(服务器增加了处理程序)。这项工作正常,非测试模式(因为客户端是在IIS的环境下,服务器是一个独立的应用程序),但当我尝试在测试中这样做,似乎我不能运行两个实例?有什么建议?你如何使用NServiceBus执行集成测试?
0
A
回答
2
这听起来像你正在做单元测试正确,嘲笑NServiceBus上的外部依赖。清楚的是,我对单元测试的定义是,他们不会在代码之外做任何事情(比如说使用MSMQ)。对于你的集成测试,你应该能够以非常简单的方式逃脱,证明你能够将消息从一个系统传递到另一个系统,并且可能获得预期的最终结果。要设置它,实际上可以从测试夹具的设置方法中启动NServiceBus客户机/服务器(并在拆卸过程中处理它们)。无论它们是EXE还是在IIS中运行都无关紧要 - 即使这意味着调用Process.Start()或类似的东西,也应该能够以编程方式在测试中启动/停止它们。或者,如果集成测试作为持续集成设置的一部分在构建服务器上运行,则构建脚本可确保在启动测试之前正确运行流程,这可能会导致更加可重复和更快速结果。使用TeamCity和MSBuild或NAnt的组合很容易做到这一点。
相关问题
- 1. 如何使用Jasmine执行nodeJS集成测试?
- 2. 如何使用Node.js执行集成测试?
- 3. 如何使用Visual Studio订购执行方法以执行集成测试?
- 4. 测试Bus.Send使用NServiceBus
- 5. 使用JSON输出执行集成测试时出错
- 6. 使用NUnit与ASP.NET WebApi控制器执行集成测试
- 7. 使用持续集成服务器执行Django单元测试
- 8. 使用konacha进行Emberjs集成测试
- 9. 你如何告诉rails使用rspec和webrat生成集成测试?
- 10. 如何为Python脚本执行集成测试?
- 11. 如何运行集成测试?
- 12. 如何使用一致的数据对Oracle UCM执行集成测试?
- 13. 如何使用request.post执行django测试?
- 14. 如何重新使用集成测试的单元测试
- 15. 与nservicebus集成
- 16. 如何使用Rapidminer测试测试集?
- 17. 如何将monkeyrunner集成测试与emma覆盖测试集成?
- 18. 如何做集成测试?
- 19. 你如何改变用户的执行测试(MSTest)?
- 20. 使用Specflow场景进行集成测试和单元测试
- 21. 如何使用RSpec和Devise/CanCan进行集成测试?
- 22. 我如何使用twitter gem和capybara进行集成测试?
- 23. 如何使用CI(持续集成)运行硒测试?
- 24. 如何使用实际数据库进行集成测试?
- 25. 如何在使用方面时运行Spring集成测试?
- 26. 何时不使用集成测试
- 27. 轨道中的自动测试如何运行集成测试?
- 28. 你可以简介Ms测试集成测试吗?
- 29. 使用JUnit测试执行
- 30. 尝试使用Spring Data JPA存储库执行集成测试返回NullPointerException
嗯,我不同意他是“单元测试正确”。不要嘲笑你不拥有的东西。他需要模拟NServiceBus这一事实表明,他可能没有正确地抽象出对公共汽车的依赖。换句话说,高层次的策略对象依赖于低层次的细节。他应该能够单独测试这些物体,也许可以使用间谍来代替公交车,以便再次单独观察物体的期望行为。 (接下来) – fourpastmidnight 2016-02-19 14:56:03
(续上)然后,正如他正确地观察到的,他还应该进行集成测试,以测试所有参与者(包括总线)之间的交互是否按预期工作(例如,消息正在发送/如预期通过公共汽车由其各自的对象接收)。 – fourpastmidnight 2016-02-19 14:56:43