【问题标题】:How to Test OneWay WCF Operations with Fitnesse如何使用 Fitnesse 测试 OneWay WCF 操作
【发布时间】:2013-12-07 18:06:10
【问题描述】:

在我们当前的应用程序中,我们正在尝试使用 WCF netMSMQBinding,它需要将 Operation Contract 标记为 One Way。

我们也在尝试使用 Fitnesse 作为我们的测试引擎,在我们的测试用例中,我们需要对场景进行端到端的测试,这意味着我们不能使用 One Way Operations,因为它们会在收到消息后立即返回被放置在队列中,fitnesse 将尝试断言结果,但实际消息可能尚未处理,也可能尚未处理。因此,如果我们使用单向操作,那么我们需要以某种方式等待它的执行完成。

尝试/研究的方法..

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

    我们尝试创建自定义 ServiceHost 并更改 服务打开前的 OperationDescription,但在 OperationDescription 类 IsOneWay 是只读属性,并且由 查看 .Net 框架代码,它返回消息计数。在我的 意见,我必须重写 Service 的 CreateDescription 操作 主机并且必须提供自定义实现。好像

  2. 在 Fitnesse 中创建一个 Monitor Fixture,它会以某种方式等待消息发出 已处理。

    方法 1:创建存储 MessageId 并完成的自定义 db 表 状态并在每个消息处理结束时输入 记录在该表中。所以现在fitnesse fixture可以轮询 表并等待执行完成。

    方法 2:以某种方式轮询 MSMQ 并知道何时处理消息。我们仍是 重新研究如何使它工作。

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

【问题讨论】:

    标签: wcf fitnesse netmsmqbinding isoneway


    【解决方案1】:

    我建议#2 更好。使用#1,您不再测试系统,因为它将在生产中运行。我假设您想在处理完消息后测试某些业务状况。您能否调查此业务状况是否属实?我认为这比轮询技术条件的 2.1 或 2.2 更好。

    【讨论】:

    • 我们也考虑过对业务条件进行轮询,但如果我们轮询业务条件,则轮询将不是通用的,因为它会根据业务环境而变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多