使可靠的Web服务不可靠,但是以可控的方式?

时间:2010-07-14 13:01:41

标签: java web-services mocking

我有一个基于Java 6的Web服务客户端,使用基于标准Java 6注释的方法(即没有Axis或其他第三方Web服务库),这种方法非常有效。我正在调用的Web服务也是如此,这很好,但现在我需要编写错误处理代码,并且我需要能够以受控方式使现有Web服务不可靠。

有许多模拟框架,它们可能会有所帮助,但我现在不需要能够用预先录制的答案或任何东西来模拟服务,只是引入不可靠性导致Web服务库失败所以我可以妥善处理这种情况。这可能是在本地运行的代理服务器。

我使用Eclipse Java EE 3.6,但Netbeans,IntelliJ和JDeveloper也是选项。

最好的方法是什么?

4 个答案:

答案 0 :(得分:4)

Tcpmon,http://ws.apache.org/commons/tcpmon/index.html可以设置为充当代理,甚至可以模拟慢速连接。 那会让你有机会模拟“抱歉,不在这里”和“是的,我们在这里,但我们超时”。

答案 1 :(得分:0)

任何引入的不稳定都可能导致错过操作不稳定的途径。旨在覆盖代码中的所有潜在错误向量,而不是尝试减少特定内容。

答案 2 :(得分:0)

由于您没有详细说明您的设置,可能会在此处抛出异常并且足够了吗?

说真的,对于像这样的集成测试,我建议运行一个真正的Web服务容器的一些子集。

基于服务的逻辑,由于以下原因,它可能表现得不可靠:

  • 它正在使用的外部系统是行为不端 - 试图嘲笑外部系统并从中抛出错误 - 不同类型 -
  • 数据库访问问题 - 尝试模拟DAO层并从那里抛出异常
  • 一般硬件问题 - 取决于:)尝试强调您认为合适的代码

答案 3 :(得分:0)

我认为,不是在Web服务应用程序的运行实例中引入不可靠性,而是最好在单元/集成测试中模拟错误条件,并断言您的顶层服务以您希望的方式响应

例如:

  1. 如果数据层报告它无法与后端通信(如果数据层抛出异常,或者它指示失败),服务入口点如何响应请求
  2. 如果其他必需组件抛出“不可用”类似的异常,服务入口点的行为如何?
  3. 您是否有任何超时逻辑,即如果处理请求的时间超过X秒,则服务会返回错误?如果是这样,也可以在模拟测试中进行模拟。