如何在maven应用程序中模拟Web服务响应?

时间:2014-04-01 14:11:04

标签: java spring unit-testing maven mocking

我的应用程序使用外部第三方Web服务(我成功使用cxf)。 如何使用本地文件模拟此Web服务来构建预先保存的响应(用于测试目的)?

更具体地说:

我正在考虑使用2个maven项目: dao-ws dao-ws-mock ,两者都具有相同的界面。

第一个 dao-ws 真的使用cxf调用webservices,而第二个 dao-ws-mock 使用本地文件来构建预先保存的响应(用于测试)目的)。

mvn install构建webapp项目,而mvn install -DuseMock使用 dao-ws-mock 依赖项构建webapp项目。 这是正确的方法吗?有更好/更简单的方法吗?

根据使用的属性,我将生成相同的.war,但具有不同的行为。这听起来对我来说是一种不好的做法(例如,我不想在内部Nexus上使用模拟依赖推进战争)。 你怎么看?

致以最诚挚的问候,

2 个答案:

答案 0 :(得分:1)

您可以在模拟服务中使用SoapUI的构建 - http://www.soapui.org/Getting-Started/mock-services.html

您可以基于wsdl生成模拟服务,指定默认响应,甚至可以根据请求创建返回不同响应的动态响应。

然后,您可以将模拟服务构建到.war并部署它们:http://www.soapui.org/Service-Mocking/deploying-mock-services-as-war-files.html(此链接显示如何在GUI中执行此操作,但也可以使用maven完成)

答案 1 :(得分:-1)

您可以使用Sandbox - 托管模拟服务并始终可用,因此在运行测试之前无需启动其他服务器(免责声明:我是创始人)。

您可以根据服务规范(wsdl,Apiary,Swagger)生成模拟,并根据需要添加动态行为。