Hi All: In an attempt to put in place junit tests for web services which would remain unaffected when the web service provider changed data I tried out using the api of Soap UI to programmatically run soap UI mock tests from JUnit. I ended up abandoning the use of Soap UI for this and decided to instead use JAXB to go from the raw xml returned from the web services to mock objects as this was so much simpler. I am posting my code (even though I abandoned the approach since perhaps its a useful use case for someone else) for the soap UI stuff since there isn't much documentation on using the SoapUI api from JUnit. 1. I installed the Soap UI Eclipse plugin 2. I used Soap UI's documentation to generate mock services. 3. I changed the port for the mock services to a unique port as there seemed to be some conflicts. 4. I added dependencies. You'll need the following jars/dependencies. Bouncy castle (bcprov-ext-jdk15-145.jar and bcprov-jdk15-145.jar) and not-yet-commons-ssl-0.3.11.jar and soap ui jars (soapui-3.0.1.jar and soapui-xmlbeans-3.0.1.jar). I also had the following 2 maven dependencies org.apache.xmlbeans xmlbeans 2.4.0 commons-cli commons-cli 1.2 After this I was able to get the following code to work. package mypackage; import java.util.List; import junit.framework.TestCase; import com.eviware.soapui.impl.wsdl.WsdlProject; import com.eviware.soapui.impl.wsdl.WsdlSubmitContext; import com.eviware.soapui.impl.wsdl.mock.WsdlMockOperation; import com.eviware.soapui.model.iface.Request; import com.eviware.soapui.model.iface.Response; import com.eviware.soapui.model.iface.Submit; import com.eviware.soapui.model.iface.Request.SubmitException; import com.eviware.soapui.model.mock.MockOperation; import com.eviware.soapui.model.mock.MockService; import com.eviware.soapui.model.project.ProjectFactory; import com.eviware.soapui.model.project.ProjectFactoryRegistry; public class SoapUITest extends TestCase{ private static final String MOCK_PROJECT_PATH = "/Developer/Projects/MyProject/MockServices-soapui-project.xml"; private static final String MOCK_REQUEST_NAME = "Request1"; protected void runMockRequestTest() { invokeMockRequest(MOCK_PROJECT_PATH,0,MOCK_REQUEST_NAME); } public void invokeMockRequest(String projectPath, int operationIndex,String requestName) { ProjectFactory projectFactory = ProjectFactoryRegistry.getProjectFactory("wsdl"); WsdlProject project = (WsdlProject) projectFactory.createNew(projectPath, ""); List mockRunner =project.getMockServiceList(); for(int i = 0 ; i < mockRunner.size() ; i ++){ MockService service = mockRunner.get(i); System.out.println("Starting Service " + service + " " + service.getDescription() + " on port " + service.getPort()); try { service.start(); } catch (Exception e) { System.out.println("Could not start Mock Service " + e); } List mockOps = service.getMockOperationList(); for(int j = 0 ; j < mockOps.size() ; j ++){ System.out.println(mockOps.get(i)); WsdlMockOperation op = ((WsdlMockOperation)mockOps.get(operationIndex)); WsdlSubmitContext context = new WsdlSubmitContext(op); Request req = op.getOperation().getRequestByName(requestName); System.out.println("Submitting request " + req.getName() + " " + req.getDescription() + " at end point " + req.getEndpoint()); System.out.println("Request content: " + req.getRequestContent()); Submit submit = null; try { submit = req.submit(context, false); } catch (SubmitException e) { System.out.println("Could not submit request " + e); } Response result = submit.getResponse(); System.out.println("Response came back as " + result.getContentType()); System.out.println("Result Content:" + result.getContentAsString()); } } System.out.println("End of starting services."); } }