首页 / 知识

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

2023-04-13 15:16:00

关于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进行单元测试。


服务通信测试应用程序消息

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢