如何对WCF服务器/客户端进行单元测试?

时间:2009-11-25 10:01:08

标签: wcf unit-testing

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

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

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

有一种简单的方法

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

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

我是否以错误的方式解决这个问题,例如,有更好的方法来测试我的通信层和WCF的使用情况吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

您可能还想看一下a series of blog posts我写的一篇非常相似的主题。

答案 1 :(得分:0)

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