批量执行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
相关产品推荐
相关产品推荐

