【问题标题】:How to unit test a WCF server/client?如何对 WCF 服务器/客户端进行单元测试?
【发布时间】:2009-11-25 10:01:08
【问题描述】:

我有一个 WCF 服务器,它是一个库程序集。 (我正在写它,所以我可以模拟它下面的级别)它被称为 var 一个客户端助手类,它位于不同的程序集中。由于传输的数据很复杂,服务器必须向客户端发送回调,我希望单独测试 WCF 代码

(我只对TCP通道或NamePipe通道感兴趣)

我不想模拟 WCF,因为我试图控制的风险是我对 WCF 的使用。

有一个简单的方法

  • 将我的 WCF 服务器加载到不同的应用程序域中
    (我可以将 WCF 服务器加载到主应用程序域中,但是我很难证明对象已正确序列化,而不仅仅是指针移动.)
  • 设置所有 WCF 配置,以便客户端类可以调用它(很可能是命名管道或 TCP)
  • 并在一些 nunit 测试中使用它
  • 我宁愿不根据配置文件进行单元测试。

我希望(希望)有一些用于设置 WCF 单元测试的实用程序类,我可以将我的服务器类的类型传递给它,并将返回一个连接到的客户端工厂服务器。

我是不是走错了路,例如有更好的方法来测试我的通信层和 WCF 的使用?

【问题讨论】:

    标签: wcf unit-testing


    【解决方案1】:

    如果您在进程内启动服务,这是迄今为止最简单的方法,因为这样您就不需要编写大量复杂的同步代码来确定服务何时运行以及何时不运行。

    不用担心指针会被传递——它们不会(除非您在 WCF 4 中选择新的进程内绑定)。它是确定对象如何以及是否被序列化的绑定。命名管道非常适合此用途。

    我总是在 using 语句中的每个测试用例中启动一个新的 ServiceHost,这有效地保证主机在调用它之前正在运行,并且在每次测试后它被正确关闭。最后一部分很重要,因为它确保了测试的独立性。

    你可能还想看看a series of blog posts我写了一个非常相似的主题。

    【讨论】:

      【解决方案2】:

      您可以使用 SOA Cleaner 来测试您的 WCF。看看http://xyrow.com 无需安装。它不是单元测试,但它非常有用(你可以让它在你的构建中运行,因为它也支持命令行)。

      【讨论】:

      • 对不起,我希望在测试中包含我编写的客户端 wapper,因为它注册回调等。所以我需要用 C# 进行测试
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 2023-03-16
      • 2012-08-16
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多