I want to create a Java class that will do the following
1. load/create a SOAPUI project using a wsdl.
2. run requests to the operations in that wsdl.
This is my SoapJavaTest.java file(though this is not complete, it is just registering a project in SOAP UI and printing the operations contained in it)
public class SoapJavaTest{
public static void main(String args[]) throws Exception{
String projectFile ="SoapUIJavaTest\\SoapUIProjects\\soapui-project1.xml";
WsdlProject project = new WsdlProject (projectFile);
//WsdlProject project = new WsdlProject();
WsdlInterface[] wsdls = WsdlImporter.importWsdl(project, "http://metalmaker.net/metalmaker.asmx?WSDL");
WsdlInterface wsdl = wsdls[0];
for (Operation operation : wsdl.getOperationList()){
WsdlOperation op = (WsdlOperation) operation;
System.out.println("OP:"+op.getName());System.out.println(op.createRequest(true));
System.out.println("Response:");System.out.println(op.createResponse(true));
}
}
}
I am getting the following error - 'NoSuchMethodError: org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(Ljava/lang/ClassLoader;Ljava/lang/String;)Lorg/apache/xmlbeans/SchemaTypeSystem;'.
I have included the following jar files
1. commons-cli-1.2
2. commons-httpclient-3.1
3. log4j
4. soapui-3.6-beta2
5. soapui-xmlbeans-2.0.2
6. wsdl-xmlbeans-1.1
7. xbean-1.0.3
8. xmlbeans-xmlpublic-2.2.0
9. XmlSchema-1.0.3
What jar file am I missing or is it the wrong classes that I am using? Any help would be appreciated.
Finally I am able to solve this. I am creating a SoapUI project, saving it and sending requests all via code. Please refer to link here for complete details. Thanks.
Rather than programmatically calling SoapUI to run your tests, have you considered using the
maven-soapui-pro-plugin
?Here's an introduction to Apache Maven, if you need to read about it :)
Now, given you have a maven project, edit your
pom.xml
and add a profile similar to the one below. Then you can run maven with -Dsoapuitests, and your SoapUI test suite(s) will run.I hope this is of help to you, good luck.