关于msbuild:自动化Web服务通信测试

关于msbuild:自动化Web服务通信测试

Automate test of web service communication

我有一个将消息发送到外部Web服务的应用程序。我使用MSBuild和Cruisecontrol.NET构建和部署此应用程序。在CCNET构建和部署应用程序时,它还使用NUnit运行一组测试。我现在也想测试Web服务通信。

我的想法是,应在构建过程中生成一个Web服务(基于外部Web服务WSDL)并将其部署到构建服务器本地Web服务器。 Web服务应该做的就是接收消息并将其放置在文件系统上,这样我就可以使用例如普通的NUnit对其进行检查。这也将使开发更加容易,因为新开发人员只需运行构建脚本并启动并运行(不必花费时间来建立与第三方服务的连接)。

是否有任何现有的实用工具可以轻松地模拟基于WSDL的Web服务?有人使用MSBuild做过类似的事情吗?

还有其他方法可以测试这种情况吗?


我刚刚开始研究http://www.soapui.org/,看来它可以很好地用于测试Web服务。

还可以看看在Web服务中添加一个抽象层,每个服务调用将直接调用一个可测试的方法(在Web范围之外)?我只是用我正在做的一个更大的项目来做的,它的可测试性很好。


这也可能是某些东西-MockingBird。看起来很有用。


看看NMock2。它是一种开放源代码的模拟产品,允许您为支持丰富和深度交互的接口创建"虚拟"实现。

例如,如果您的WS接口被称为IService并且具有Data GetData()方法,则可以创建一个模拟,该模拟要求该方法被调用一次并返回一个新的Data对象:

1
2
3
4
5
6
7
8
var testService = mockery.NewMock<IService>();
Expect
    .Once
    .On(testService)
    .Method("GetService")
    .WithNoArguments()
    .Will(
        Return.Value(new Data());

在测试结束时,调用mockery.VerifyAllExpectationsHaveBeenMet()以确保实际上已经调用了GetData方法。

P.S .:请勿将" NMock2"项目与" NMock RC2"(在sourceforge上也称为" nmock2")混淆。 NMock2-该项目似乎已取代NMock。


通常,测试这样的事情的一种很好的方法是使用模拟对象。

在工作中,我们使用产品TypeMock来测试Web服务通信和其他外部依赖项。它要花钱,所以出于这个原因,它可能不适合您的需求,但是我认为这是一个很棒的产品。我可以从个人经验告诉您,它与NUnit和CCNet集成得很好。

它有一个非常简单的语法,您基本上会说:"当调用此方法/属性时,我希望您返回此值。"非常适合测试诸如网络故障,文件不存在以及当然还有Web服务之类的内容。


在我的工作场所,我们使用Typemock和nUnit进行单元测试。


推荐阅读

    linux运行vim命令?

    linux运行vim命令?,系统,工具,官方网站,模式,基础,数据,代码,环境,入口,命令

    linux自动运行命令?

    linux自动运行命令?,服务,系统,时间,代码,周期性,第一,命令,管理,在线,状态,l

    linux开启运行命令?

    linux开启运行命令?,系统,服务,工作,管理,状态,命令,标准,情况,环境,工具,lin

    linux运行wps命令?

    linux运行wps命令?,软件,官网,名称,时间,电脑,系统,工具,环境,项目,数据,wps

    linux服务器搭建命令?

    linux服务器搭建命令?,系统,服务,软件,地址,平台,在线,密码,工具,环境,百度,l

    linux运行cmd命令?

    linux运行cmd命令?,电脑,系统,状态,情况,环境,命令,单位,管理,设备,数据,电脑

    服务器重启命令linux?

    服务器重启命令linux?,工作,标准,设备,服务,系统,名称,命令,百度,网络,密码,

    linux服务端常用命令?

    linux服务端常用命令?,工作,地址,系统,网络,基础,命令,标准,工具,信息,管理,l

    linux运行两个命令?

    linux运行两个命令?,网络,地址,系统,工作,暂停,命令,网站,密码,网上,入口,Lin

    linux禁用服务命令行?

    linux禁用服务命令行?,服务,系统,软件,管理,工具,信息,状态,平台,连续,技术,l

    linux停服务常用命令?

    linux停服务常用命令?,地址,工作,系统,命令,服务,信息,标准,管理,代码,进程,l

    linux服务器删除命令?

    linux服务器删除命令?,系统,服务,管理,情况,命令,工作,互动,地址,软件,较大,l

    linux命令运行代码?

    linux命令运行代码?,代码,单位,系统,环境,连续,保险,工具,命令,文件,音乐,Lin

    linux开启服务命令?

    linux开启服务命令?,服务,标准,设备,工作,网络,系统,密码,命令,服务器,终端,

    linux服务器负荷命令?

    linux服务器负荷命令?,信息,电脑,中科,环境,工具,系统,平均,检测,情况,状态,l

    linux命令运行脚本?

    linux命令运行脚本?,代码,系统,工作,设计,状态,命令,脚本,文件,目录,终端,运

    linux上运行的命令?

    linux上运行的命令?,系统,工作,软件,网络,地址,信息,情况,命令,灵活,基础知

    linux怎么运行命令?

    linux怎么运行命令?,系统,工作,首页,工具,终端,地址,命令,信息,电脑,情况,怎

    linux常见服务器命令?

    linux常见服务器命令?,信息,工作,标准,地址,设备,系统,情况,时间,状态,命令,

    linux右击运行命令?

    linux右击运行命令?,系统,工作,设备,标准,首页,发行,电脑,终端,命令,文件,lin