如何使用Fitnesse测试单向WCF操作



在我们当前的应用程序中,我们正在尝试使用WCF netMSMQBinding,它需要将操作合约标记为单向。

我们也在尝试使用Fitnesse作为我们的测试引擎。在我们的测试案例中,我们需要端到端地测试场景,这意味着我们不能使用单向操作,因为一旦消息被放入队列,它们就会被返回,Fitnesse会尝试断言结果,但实际消息可能还没有处理。因此,如果我们使用单向操作,那么我们需要以某种方式等待,直到它的执行完成。

尝试过的方法/正在研究。。

  1. 通过阅读更改托管时的操作说明配置,使得当Hosted in Fitnesse IsOneWay为False时,但在生产中,IsOneWay为True,然后仅用户MSMQ绑定在生产和测试中使用tcp或netnamedpipe。

    我们尝试创建自定义ServiceHost并进行更改打开服务前的操作说明,但在OperationDescription类IsOneWay是只读属性,由查看.Net Framework代码,它返回消息计数。在我的意见,我必须覆盖服务的CreateDescription操作主机必须提供自定义实现。看来

  2. 在Fitnesse中创建一个Monitor Fixture,它将如何等待消息已处理。

    方法1:创建自定义数据库表,其中存储MessageId和completed状态,并在每个消息处理结束时输入记录在那个表中。所以现在fitnesse fixture可以对表,然后等待执行完成。

    方法2:以某种方式轮询MSMQ并知道何时处理消息。我们仍然重新研究如何使其发挥作用。

请为当前方法或任何新方法提出任何建议。

我建议#2更好。使用#1,您不再测试系统,因为它将在生产中运行。我想您想在处理消息后测试一些业务条件。你能为这种商业状况进行民意调查吗?我认为这是一个比2.1或2.2更好的方法,在2.1或2.2中,你要对技术条件进行民意调查。

最新更新