Forum Discussion

HeikoStudt's avatar
HeikoStudt
Occasional Contributor
9 years ago

Testrunner: First MockResponseTestStep fails probably if there was no other mock call before.

Preface:

As stupid as I am, I filed a bug in the very old sourceforge SoapUI-Project: ;-)

There are further bugs/requests entered - probably SmartBear should close that project and/or get over those bug filings...

https://sourceforge.net/p/soapui/bugs/692/

 

We try to start automatic testrunner with some MockResponse TestStep. After migrating to SSL we've got the following exception:

java.lang.NullPointerException
at com.eviware.soapui.impl.wsdl.submit.AbstractMessageExchange.<init>(AbstractMessageExchange.java:33)
at com.eviware.soapui.impl.wsdl.submit.AbstractWsdlMessageExchange.<init>(AbstractWsdlMessageExchange.java:36)
at com.eviware.soapui.impl.wsdl.panels.mockoperation.WsdlMockResultMessageExchange.<init>(WsdlMockResultMessageExchange.java:43)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlMockResponseTestStep$AssertedWsdlMockResultMessageExchange.<init>(WsdlMockResponseTestStep.java:1064)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlMockResponseTestStep.internalRun(WsdlMockResponseTestStep.java:407)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlMockResponseTestStep.run(WsdlMockResponseTestStep.java:354)
at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.runTestStep(AbstractTestCaseRunner.java:211)
at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.runCurrentTestStep(WsdlTestCaseRunner.java:47)
at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.internalRun(AbstractTestCaseRunner.java:138)
at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.internalRun(AbstractTestCaseRunner.java:46)
at com.eviware.soapui.impl.wsdl.support.AbstractTestRunner.run(AbstractTestRunner.java:129)
at com.eviware.soapui.impl.wsdl.support.AbstractTestRunner.start(AbstractTestRunner.java:77)
at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase.run(WsdlTestCase.java:595)
at com.eviware.soapui.tools.SoapUITestCaseRunner.runTestCase(SoapUITestCaseRunner.java:565)
at com.eviware.soapui.tools.SoapUITestCaseRunner.runRunner(SoapUITestCaseRunner.java:397)
at com.eviware.soapui.tools.AbstractSoapUIRunner.run(AbstractSoapUIRunner.java:204)
at com.eviware.soapui.tools.AbstractSoapUIRunner.run(AbstractSoapUIRunner.java:139)
at com.eviware.soapui.tools.AbstractSoapUIRunner.runFromCommandLine(AbstractSoapUIRunner.java:114)
at com.eviware.soapui.tools.SoapUITestCaseRunner.main(SoapUITestCaseRunner.java:120)

Following the installed code (5.2.x) and a derieved eclipse project (is there any ready-to-compile out there?) the error seems to be in:
com.eviware.soapui.impl.wsdl.teststeps.WsdlMockResponseTestStep.internalRun(WsdlMockResponseTestStep.java:407)
where the messageExchange is created even for a null getLastResult(). At the end, in the inheritance hierachy, this is not valid.

 

The following patch fixes the error above. However, I cannot estimate all the consequences.

AssertedWsdlMockResultMessageExchange messageExchange = new AssertedWsdlMockResultMessageExchange(
mockRunListener.getLastResult());
result.setMessageExchange(messageExchange);

        if (mockRunListener.getLastResult() != null) {
            lastResult = lastResultTemp;
            mockResponse.setMockResult(lastResult);

            context.setProperty(AssertedXPathsContainer.ASSERTEDXPATHSCONTAINER_PROPERTY, messageExchange);
            assertResult(lastResult, context);
        }

into
       

WsdlMockResult lastResultTemp = mockRunListener.getLastResult();
        if (lastResultTemp != null) {
            AssertedWsdlMockResultMessageExchange messageExchange = new AssertedWsdlMockResultMessageExchange(
                    lastResultTemp);
            result.setMessageExchange(messageExchange);
            lastResult = lastResultTemp;
            mockResponse.setMockResult(lastResult);

            context.setProperty(AssertedXPathsContainer.ASSERTEDXPATHSCONTAINER_PROPERTY, messageExchange);
            assertResult(lastResult, context);
        } else {
             result.setMessageExchange(null); //TODO: Really?
        }

 

MFG
Heiko Studt

No RepliesBe the first to reply