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

如何使用Fitnesse测试单向WCF操作,wcf,fitnesse,netmsmqbinding,isoneway,Wcf,Fitnesse,Netmsmqbinding,Isoneway,在我们当前的应用程序中,我们尝试使用WCF netMSMQBinding,它需要将操作契约标记为单向 我们还尝试使用Fitnesse作为我们的测试引擎,在我们的测试用例中,我们需要端到端测试场景,这意味着我们不能使用单向操作,因为它们将在消息放入队列后立即返回,Fitnesse将尝试断言结果,但在实际的消息中,可能尚未处理,也可能尚未处理。因此,如果我们使用单向操作,那么我们需要以某种方式等待它的执行完成 尝试/研究的方法 通过读取更改托管时的操作说明 配置,以便在Fitnesse IsOneW

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

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

尝试/研究的方法

  • 通过读取更改托管时的操作说明 配置,以便在Fitnesse IsOneWay中托管时为False, 但在生产中,IsOneWay是真的,然后用户仅绑定MSMQ 在生产和测试中使用tcp或netnamedpipe

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

  • 在Fitnesse中创建一个监视器装置,该装置将等待消息发出 已处理

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

    方法2:以某种方式轮询MSMQ并知道何时处理消息。我们还是 我们正在研究如何让它工作


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

    我建议#2更好。使用#1,您将不再测试系统,因为它将在生产中运行。我假设您希望在消息处理后测试某些业务条件。你能证明这个商业条件是真实的吗?我认为这是一个比2.1或2.2更好的方法,因为你正在调查一个技术条件。

    我们也考虑了对业务条件的投票,但是如果我们调查一个业务条件,那么轮询不会是通用的,因为它将根据业务上下文而改变。