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

批量执行SoapUI项目时WSDL缓存引发操作缺失错误的排查

SoapUI批量运行项目时WSDL缓存引发的报错问题

问题现象

  • 单独在SoapUI GUI中运行projectX的测试用例,执行正常
  • 通过SoapUI-5.6.0\bin\testrunner.bat运行projectX,执行正常
  • 使用Java代码调用com.eviware.soapui.tools.SoapUITestCaseRunner.run()方法单独运行projectX正常,但批量运行4个SoapUI项目时,projectX抛出错误:Missing operation [operationXyz] in wsdl definition
  • 使用soapui-maven-plugin 5.1.3运行时,存在以下规律:
    • 单独运行projectX正常
    • 先运行project1再运行projectX正常
    • 先运行project2再运行projectX时,project2正常但projectX报错
    • 先运行projectX再运行project2,两者均正常

环境说明

  • 当前使用SoapUI jar版本为5.1.0,升级至5.1.3后问题仍未解决
  • 由于项目基于旧版Java,暂无法升级至更高版本的SoapUI包

核心Java执行代码

SoapUI.getSettings().setBoolean(SSLSettings.CLIENT_AUTHENTICATION, true);
SoapUI.getSettings().setString(SSLSettings.KEYSTORE, "src/test/resources/xxxxxx.p12");
SoapUI.getSettings().setString(SSLSettings.KEYSTORE_PASSWORD, "12345678");
SoapUI.saveSettings();

SoapUITestCaseRunner runner = new SoapUITestCaseRunner();
runner.setProjectFile("src/test/resources/project_1.xml");
runner.setProjectProperties(new String[] { "foo="+foo, "bar="+bar});
runner.setOutputFolder("target/soapui/project_1");
runner.setJUnitReport(true);
runner.setExportAll(true);
runner.setPrintReport(true);
runner.run();

// 重复上述逻辑运行project_2等其他项目,仅修改setProjectFile的参数

问题根源

SoapUI会根据WSDL URL进行缓存,涉事的多个项目使用了相同的WSDL URL但实际WSDL内容不同。该问题在SoapUI 5.6.0和5.8.0的GUI中也存在:打开或执行某项目的测试后,其WSDL会被加载并缓存,后续其他使用相同URL但不同内容WSDL的项目会直接复用该缓存,导致找不到对应操作的报错。

内容的提问来源于stack exchange,提问作者David Balažic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 06:35:03