在Java中显示SOAPUI TestRunner响应

在Java中显示SOAPUI TestRunner响应,java,automated-tests,soapui,Java,Automated Tests,Soapui,我使用的是来自Java的SOAPUIAPI。我已经创建了我的SOAP项目,并添加了一个测试套件和所需的测试用例和测试步骤。我只是想知道有没有办法以XML格式获得测试的响应?因为我想在测试中进一步使用这些数据 import com.eviware.soapui.impl.wsdl.WsdlProject; import com.eviware.soapui.model.iface.MessageExchange; import com.eviware.soapui.model.support.Pr

我使用的是来自Java的SOAPUIAPI。我已经创建了我的SOAP项目,并添加了一个测试套件和所需的测试用例和测试步骤。我只是想知道有没有办法以XML格式获得测试的响应?因为我想在测试中进一步使用这些数据

import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.model.iface.MessageExchange;
import com.eviware.soapui.model.support.PropertiesMap;
import com.eviware.soapui.model.testsuite.TestCase;
import com.eviware.soapui.model.testsuite.TestRunner;
import com.eviware.soapui.model.testsuite.TestSuite;
import org.junit.Assert;
import java.util.List;
public class SoapUITest
{
  public final static void main(String [] args) throws Exception {

    WsdlProject project = new WsdlProject("C:\\WebService\\WebServiceTest\\src\\main\\java\\weather.xml");
    List<TestSuite> testSuites = project.getTestSuiteList();
    for (TestSuite testSuite: testSuites)
    {
        System.out.println("Running Test Suite: "+ testSuite.getName());
        List<TestCase> testCases = testSuite.getTestCaseList();
        for(TestCase testCase:testCases)
        {
            System.out.println("Running Test Case: " + testCase.getName());
            TestRunner testRunner = testCase.run(new PropertiesMap(), false);
            Assert.assertEquals(TestRunner.Status.FINISHED,testRunner.getStatus());

            //Exception in the below line
            //System.out.println(((MessageExchange)testRunner).getResponseContent());
        }
    }
    System.out.print("Testing finished successfully");
  } 
}

是否有人已经实现了这种发送请求并从SOAPUITestRunner获取XML格式响应的方法?感谢您的帮助。

下面的
runstep和getresponsecontent
方法将运行测试步骤,并将响应作为
wsdl请求测试步骤
类型的字符串,我相信这就是您要查找的类型。您还可以根据需要为测试步骤类型的其他实例添加条件

公共字符串runstep和getresponsecontent(WsdlTestCaseRunner、TestStep-TestStep){
TestStepResult=runner.runTestStep(testStep);
if(WsdlTestRequestStepResult的结果实例){
返回((WsdlTestRequestStepResult)结果).getResponse().getContentAsString();
}
返回null;
}
除上述新方法外,您的以下代码行需要替换为以下代码:

现有:
TestRunner TestRunner=testCase.run(新属性映射(),false)

替换为:这将循环测试用例的测试步骤

WsdlTestCaseRunner=新的WsdlTestCaseRunner((WsdlTestCase)testCase,新的StringToObject对象映射(testCase.getProperties());
for(TestStep TestStep:testSteps){
//在这里调用上面的get方法
字符串响应=runstep和getresponsecontent(runner,testStep);
系统输出打印(“收到的响应为:”+响应);
}

您应该运行
测试步骤
,以期望得到响应。但是,
测试用例
在您的案例中运行。所以,循环测试步骤。你能给我提供代码片段吗。谢谢。你的代码片段?循环通过测试步骤?或者访问响应?只是运行特定步骤并捕获响应。我没有找到正确的方法,请参阅帮助。请注意,在groovy中运行步骤是必要的。谢谢Rao,感谢您的努力。它运转平稳。我得到了XML响应,可以做进一步的处理。
Exception in thread "main" java.lang.ClassCastException: com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner cannot be cast to com.eviware.soapui.model.iface.MessageExchange
at VMSSoapUI.main(SoapUITest.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)