C# 什么';测试WCF服务的最佳方法是什么?

C# 什么';测试WCF服务的最佳方法是什么?,c#,.net,wcf,C#,.net,Wcf,我使用了微软随VisualStudio提供的这个工具,因为它既快又脏 但它有点笨重,很难处理。是否有其他有用的测试客户机供您使用,并且不需要创建新的VisualStudio项目和编译代码 编辑:我正在寻找一个图形化的测试工具,我可以使用它在不同的环境中对系统进行快速的特殊测试,而不必编写大量不同的测试。是另一个web服务测试工具。我强烈推荐它。除了使用您最喜欢的单元测试框架和编写测试之外,您不会找到更好的工具来创建WCF服务的自动化测试。测试客户机或soapUI将创建一个可以在持续集成场景中运

我使用了微软随VisualStudio提供的这个工具,因为它既快又脏

但它有点笨重,很难处理。是否有其他有用的测试客户机供您使用,并且不需要创建新的VisualStudio项目和编译代码


编辑:我正在寻找一个图形化的测试工具,我可以使用它在不同的环境中对系统进行快速的特殊测试,而不必编写大量不同的测试。

是另一个web服务测试工具。我强烈推荐它。

除了使用您最喜欢的单元测试框架和编写测试之外,您不会找到更好的工具来创建WCF服务的自动化测试。测试客户机或soapUI将创建一个可以在持续集成场景中运行的测试。

好吧,我最后在MS test中编写单元测试。在每次测试之前,该服务由测试程序集托管,并在测试结束后拆下。当然这不是单元测试,所以纯粹主义者会不寒而栗,但这确实意味着我可以随时运行测试。

如果需要测试客户端逻辑: 您可以使用模拟/隔离框架来存根对服务器的实际调用,并使用单元测试框架来编写适当的单元测试

测试服务器逻辑可能更容易——您只需测试对业务逻辑的调用和对外部组件(即数据库)的存根调用


单元测试客户端到服务器之间的完整交互没有实际好处,因为您知道WCF可以工作,而是在专用服务器/客户端上添加整个环境的集成测试。

我的意思并不是说soapUI不适用于使用basicHttpBinding公开的WCF服务。使用basicHttpBinding将起作用,因为该服务将作为legaxy ASMX web服务运行。但是,例如,如果要将绑定(或使用多个绑定)切换到netTcpBinding,我认为仍然不可能使用soapUI调用该服务的方法。我描述的场景非常常见,其中您在web上公开了一个WCF服务,使用basicHttpBinding端点实现最大互操作性,而另一个端点作为netTcpBinding(实现最大性能)仅在内部使用

有一个名为SOA Cleaner的新测试客户机,我建议您尝试一下。它支持WCF。可以在以下网址找到:。

我运行了WcfStorm,它的评估期为15天,给我留下了深刻的印象。连接到服务,所有方法都将公开。单击一个方法,您可以构建多个测试用例。完成后,您可以保存这些测试(将我的作为服务的解决方案文件保存),并且在进行更改时,您可以运行满足连续测试的所有测试。它还有一个命令行,允许您集成到构建机器中进行真正的连续测试


它还支持IronPython,因此,如果您擅长使用该脚本语言,您可以编写脚本删除测试中添加的记录。

令人惊讶的WCFStorm,但我认为对于独立开发人员来说太昂贵了

正如Darin所说,我也推荐soapUI

但有一种特殊情况,当您在WCF中使用REST并将请求作为POST消息发送时,soapUI不会支持JSON请求

在这种情况下,您可以使用我在此处找到的工具:

有助于测试您描述的方式。

下面是一些测试不同wcf场景的提示


我要寻找的不仅仅是web服务,我们在WCF4中使用了大量的net.tcp绑定—只需向您的服务添加一个附加的basicHttpBinding端点并将其提供给SoapUI即可。这不会测试我们拥有的netTcpBindings,而这正是使用WCFStorm()的全部目的它是为测试WCF服务而设计的,可以轻松地处理netTcpBindings。http绑定不提供与TCP绑定相同的数据和接口吗?如果是这样的话,为什么TCP绑定需要单独测试?@John,我每天都在持续集成构建中使用SoapUI:谢谢你发布这篇文章。如果您使用jUnit测试WCF服务,那么您应该在某个地方发布日志。大多数人不会使用Java来测试.NET代码,我没有提到我使用JUnit。使用SoapUI,您可以编写web测试并定义期望值。这些测试可以在命令行上运行,结果将写入一个标准文本文件,该文件可以在构建过程中进行解释。再一次,我想看一篇关于这方面的文章或博客文章。我建议使用soapUI来“摆弄”服务;如果我看到了如何做到这一点,我很乐意将其推荐给测试人员。我必须同意Darin的观点——SoapUI有一个命令行运行程序,并且没有任何东西会阻止它在CI环境中的使用。再加上直接调用服务接口、模拟域层的传统“服务单元测试”,我们也有“服务自主机测试”“它在单元测试框架中承载服务,但也模拟了域层。这些是集成测试和单元测试之间的混合,但它们证明了编组和序列化工作正常,这是一个棘手的问题。它是一个.NET应用程序。这是非常简单和轻扭动;deosn不需要任何安装。您能更具体地说明特例是什么吗?添加了更多关于调试的详细信息TDD环境中有好处,您正在更改绑定测试客户端逻辑(代理)和测试服务本身,这些方法调用业务层方法对吗?所以你真的需要2套测试和孩子在这里的服务。