在我们当前的应用程序中,我们尝试使用WCF netMSMQBinding,它需要将操作合同标记为单向。
我们也在尝试使用Fitnesse作为我们的测试引擎。在我们的测试用例中,我们需要端到端地测试场景,这意味着我们不能使用单向操作,因为它们将在消息发布后立即返回如果放在队列中,fitnesse将尝试断言结果,但实际消息可能已经处理过,也可能尚未处理。因此,如果我们使用单向操作,那么我们需要以某种方式等待,直到执行完成。
方法尝试/研究..
通过阅读在托管时更改OperationDescription 配置,以便在Fitnesse IsOneWay托管时为False, 但在生产中,IsOneWay是True,然后只是用户MSMQ绑定 在生产和测试中使用tcp或netnamedpipe。
我们尝试创建自定义ServiceHost并进行更改 在服务打开之前的OperationDescription,但在 OperationDescription类IsOneWay是只读属性和 查看.Net Framework代码,它返回消息的数量。在我的 意见,我必须覆盖服务的CreateDescription操作 主持并且必须提供自定义实现。似乎
在Fitnesse中创建一个监视器夹具,可以等到消息为止 处理。
方法1:创建存储MessageId并完成的自定义数据库表 状态和每个消息处理结束时输入 记录在该表中。所以现在fitnesse夹具可以只是轮询 表,等到执行完毕。
方法2:以某种方式轮询MSMQ并知道何时处理消息。我们仍是 重新搜索如何使其发挥作用。
请为当前方法或任何新方法提出建议。
答案 0 :(得分:0)
我建议#2更好。使用#1,您将不再测试系统,因为它将在生产中运行。我假设您要在处理消息后测试某些业务条件。你能否对这种商业状况进行民意调查?我认为这是一种比2.1或2.2更好的方法,在这种情况下,您需要轮询技术条件。