Java 使一个可靠的web服务不可靠,但以可控的方式?
我有一个基于Java6的web服务客户机,使用标准的基于Java6注释的方法(即没有Axis或其他第三方web服务库),它工作得非常好。我调用的web服务也是如此,这很好,但现在我需要编写错误处理代码,并且我需要能够以可控的方式使现有的web服务不可靠 有很多模拟框架,它们可能很有用,但我现在不需要能够用预先记录的答案或任何东西来模拟服务,只需要引入不可靠性,导致web服务库失败,这样我就可以优雅地处理这种情况。这可能是本地运行的代理服务器 我使用EclipseJavaEE3.6,但Netbeans、IntelliJ和JDeveloper也是可选的Java 使一个可靠的web服务不可靠,但以可控的方式?,java,web-services,mocking,Java,Web Services,Mocking,我有一个基于Java6的web服务客户机,使用标准的基于Java6注释的方法(即没有Axis或其他第三方web服务库),它工作得非常好。我调用的web服务也是如此,这很好,但现在我需要编写错误处理代码,并且我需要能够以可控的方式使现有的web服务不可靠 有很多模拟框架,它们可能很有用,但我现在不需要能够用预先记录的答案或任何东西来模拟服务,只需要引入不可靠性,导致web服务库失败,这样我就可以优雅地处理这种情况。这可能是本地运行的代理服务器 我使用EclipseJavaEE3.6,但Netbea
这样做的最佳方式是什么?任何引入的不稳定都可能导致错过不稳定的操作途径。目标是覆盖代码中所有潜在的错误向量,而不是试图减少细节。因为您没有透露足够的设置细节,可能在这里抛出异常,那里就足够了 说真的,对于这样的集成测试,我建议运行真实web服务容器的一些子集 根据服务的逻辑,其行为可能不可靠,因为:
- 它使用的外部系统行为不端——试图模仿外部系统并抛出不同类型的错误
- 数据库访问问题-尝试模拟DAO层并从那里抛出异常
- 一般硬件问题-取决于:)尽量强调您认为合适的代码
这将使您有机会模拟“对不起,不在这里”和“是的,我们在这里,但我们超时了” @Fosco,我只是拒绝了这一评论:)@Fosco,我认为那种评论是不必要的。ørn,当然是不必要的。不要让它影响你。我主要需要处理“对不起,不在这里”和“是的,我们在这里,但我们超时”的情况。另外,请注意,我无法控制web服务服务器。关于“这里有一些格式不正确的数据”、“你是谁?”等,你将为此使用try/catch块,因此请捕获你正在查找的特定异常,但要准备好让你的应用程序与其他应用程序一起轰炸。轰炸意外情况是可以的。您对我所述的需求有什么建议吗?如果您知道要捕获的错误条件,请在try/catch块中这样做,并捕获您想要的异常。假设任何模拟故障都可能是不可靠的(因为它是基于多种假设的),您不需要尝试测试它就可以了。我知道错误情况,但不知道web服务库将如何应对这些情况,因此我需要激发它们。您需要了解我的设置吗?正如我在回答中所写,了解WS的体系结构会很好——它应该做什么。我可能会把它复杂化,但从我的观点来看,您的WS可以做很多事情,每一件事情都可能导致失败。您可以简要描述WS中的逻辑流。此外,你还写过“引入不可靠性”,但这是什么类型的?因为WS中的一个简单错误只会导致服务抛出一个异常。如果您想模拟超时,您应该在测试工具中引入某种延迟器。它不是我的web服务,而是我调用的web服务。考虑它——就像我们一样——是一个简单的、幂等的查找服务,它的行为就像java。UTI.MAP。我可能措辞不精确。我需要激发web服务库对某些错误条件做出反应,以便能够处理对所述条件的响应。例如,最初提出问题后发现抛出的异常是
javax.xml.rpc.soap.SOAPFaultException
,它直接扩展了RuntimeException。感谢您的建议。它看起来很有用!