尝试使用 java 运行 soap xml 时出错

Getting Error while trying to run soap xml using java

我正在使用 maven-soapui-plugin 4.5.1,我想 运行 一个特定的测试步骤。我正在使用以下代码:

WsdlProject abc = new WsdlProject(projectXMLPath);
WsdlTestSuite wsdlTestSuite = abc.getTestSuiteByName(testSuiteName);
WsdlTestCase wsdlTestCase = wsdlTestSuite.getTestCaseByName(testCaseName);
WsdlTestCaseRunner wsdlTestCaseRunner = new WsdlTestCaseRunner(wsdlTestCase,new StringToObjectMap());
WsdlTestStep wsdlTestStep = wsdlTestCase.getTestStepByName(testStepName);
wsdlTestCaseRunner.run(wsdlTestStep);

几件事 - 1.项目xml有2个测试套件,第一个测试套件有步骤,第二个测试套件有库函数。在 SoapUI 中,它们的编码如下:

来自第一个测试套件的第一个测试步骤脚本(假设已发出具有有效地址的请求)如下:

def proj= null
def workspace = testRunner.testCase.testSuite.project.getWorkspace();

proj= workspace.getProjectByName("Calling")

def testCase = proj.testSuites["Library"].testCases["Successful Calling Steps" ]
testRunner.testCase.setPropertyValue( "addressLine1", "xxxx" )
testRunner.testCase.setPropertyValue( "city", "xxxx" )
testRunner.testCase.setPropertyValue( "state", "xx" )

def testStep = testCase.getTestStepByName("Given a request with a valid address is made")

def runner = null
runner = testStep.run(testRunner, context)
  1. 库测试套件中的第二个测试脚本具有实际的 REST 请求、web 服务端点和 web 服务身份验证。

  2. 如果我们在 SOAPUI 中执行第一个测试套件中的第一个测试步骤,它会在内部调用库中的测试步骤替换变量值并进行 REST 调用以获得响应。这在 SOAPUI 中工作正常,但是当我们通过 JAVA 中的 运行 方法调用第一个测试步骤时,它失败并出现以下错误。

    线程中的异常 "main" java.lang.NoClassDefFoundError: com/jniwrapper/PlatformContext 在 com.eviware.soapui.SoapUI.isJXBrowserDisabled(SoapUI.java:1060) 在 com.eviware.soapui.SoapUI.isJXBrowserDisabled(SoapUI.java:1038) 在 com.eviware.soapui.impl.wsdl.submit.filters.HttpAuthenticationRequestFilter.filterAbstractHttpRequest(HttpAuthenticationRequestFilter.java:77) 在 com.eviware.soapui.impl.wsdl.submit.filters.AbstractRequestFilter.filterRequest(AbstractRequestFilter.java:31) 在 com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.java:184) 在 com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:123) 在 com.eviware.soapui.impl.wsdl.WsdlSubmit.submitRequest(WsdlSubmit.java:76) 在 com.eviware.soapui.impl.rest.RestRequest.submit(RestRequest.java:209) 在 com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep.run(RestTestRequestStep.java:898) 在 com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.runTestStep(AbstractTestCaseRunner.java:238) 在 com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.runTestStep(AbstractTestCaseRunner.java:224) 在 com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner$runTestStep.call(未知来源) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) 在 MyClass.simpletest1(MyClass.groovy:109) 在 test.main(test.java:11) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) 原因:java.lang.ClassNotFoundException:com.jniwrapper.PlatformContext 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 还有 22 个

这里可能遗漏了什么我需要添加以解决问题的内容?请帮忙。

SoapUI 版本 4.5.1 已经过时,所需的依赖项可能不再可用。

您应该使用较新的版本。从4.5.2版本开始,SoapUI被SmartBear收购,相应更新了jar的groupid,导致在Maven repos中的位置不同:http://smartbearsoftware.com/repository/maven2/com/smartbear/soapui/soapui-maven-plugin/