You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于WSDL生成服务器桩用于集成测试(模拟超时场景)

基于WSDL生成超时测试用WebService Stub服务器的简便方法

需求背景

我有一份实现了若干WebService的服务器提供的WSDL文件,已经用Axis2生成了客户端代码,现在要构建针对服务器超时场景的集成测试。为此,我希望创建一个server-stub,让其中的方法执行sleep的时长超过客户端配置的超时时间。请问有没有简便方法基于该WSDL生成可运行服务的脚手架式服务器?

可行方案

1. 用Axis2自带工具生成服务端脚手架

  • 执行wsdl2java命令时添加-ss参数(指定生成服务端代码):
    wsdl2java -ss -uri your-service.wsdl
    
  • 生成的代码中会包含对应WebService方法的骨架实现类(通常类名带Skeleton后缀),在目标方法内添加睡眠逻辑:
    public YourResponse yourServiceMethod(YourRequest request) {
        // 睡眠时长设置为超过客户端超时时间(示例为6秒,假设客户端超时5秒)
        try {
            Thread.sleep(6000);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
        // 原有返回逻辑(或直接返回空/测试用响应)
        return new YourResponse();
    }
    
  • 将生成的代码打包成.aar文件,放到Axis2服务器的services目录下启动,或使用Axis2的嵌入式服务器快速运行。

2. 用Apache CXF生成嵌入式服务端(更快捷)

  • 使用CXF的wsdl2java工具,添加-server参数生成带嵌入式服务器的脚手架:
    wsdl2java -server -uri your-service.wsdl
    
  • 在生成的服务实现类中,给需要模拟超时的方法添加睡眠逻辑:
    public YourResponse yourServiceMethod(YourRequest request) {
        try {
            // 设置睡眠时长超过客户端超时
            Thread.sleep(7000);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
        return new YourResponse();
    }
    
  • 直接运行生成的带Server后缀的主类,即可启动一个嵌入式WebService服务器,无需额外部署。

3. 用SoapUI创建Mock Service(无代码方案)

  • 将WSDL导入SoapUI,右键选择New MockService创建Mock服务
  • 选中需要模拟超时的方法,在响应配置中设置Delay值(单位毫秒),确保该值大于客户端的超时时间
  • 启动Mock Service后,将客户端的请求地址指向Mock服务的地址,即可触发超时场景测试

内容的提问来源于stack exchange,提问作者Rob Audenaerde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:15:36