Execution of SoapUI project using Junit

In this post I am going to show you how to execute SoapUI project using Junit.
SoapUI provide testrunner class name “SoapUITestCaseRunner” which can be used to run soapui test using java class, maven or ant build tool. We create object of this class in java file and call the run function to execute soapui project.

Steps to create Junit test for soap ui project:
1. Chose any IDE as eclipse or NetBean
2. Add “soapui-4.5.1.jar” from soapui bin folder and soapui lid folder as library to class path of your project (eclipse).
3. Use “SoapUITestCaseRunner” class object to run soapui project as mentioned in below code:

//import classes

import org.junit.Test;
import com.eviware.soapui.tools.SoapUITestCaseRunner;

//Junit test method

@Test
public void testSoapUI() {
    //initialize  SoapUITestCaseRunner class object
    SoapUITestCaseRunner soapUITestCaseRunner = new SoapUITestCaseRunner();
   
    //set your project absolute path of your project
    soapUITestCaseRunner.setProjectFile("D://SampleTest-soapui-project.xml");
    try {
            //call run method to execute all test of project.
              soapUITestCaseRunner.run();
        } catch (Exception e) {                                                          
              e.printStackTrace();
    }
}

4. Use below code if you want to execute test case not just executing all test case
//import classes

import java.io.IOException;
import java.util.List;
import org.apache.xmlbeans.XmlException;
import org.junit.Assert;
import org.junit.Test;
import com.eviware.soapui.impl.wsdl.WsdlProject;
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 com.eviware.soapui.support.SoapUIException;

//Junit test method
@Test
public void testSoapUI() throws XmlException, IOException, SoapUIException {

    // Create a  WsdlProject instance by specifying the project absolute path
    WsdlProject project = new WsdlProject("D://SampleTest-soapui-project.xml");
   
   // retrieve all test suite from project
    List testSuiteList = project.getTestSuiteList();
   
    // Iterate all TestSuites of project
    for (TestSuite ts : testSuiteList) {
         System.out.println("****Running Test suite " + ts.getName() + "********");
                                            
         // Retrieve all TestCases from a particular TestSuite
         List testCaseList = ts.getTestCaseList();
                                            
          // Iterate all TestCases of the particular TestSuite
           for (TestCase testcase : testCaseList) {
                 System.out.println("****Running Test Case " + testcase.getName()+ "*****");

                  // Run the specific TestCase
                  TestRunner testRunner = testcase.run(new PropertiesMap(), false);
                  //verify where test case pass or not
                 Assert.assertEquals(TestRunner.Status.FINISHED, testRunner.getStatus());
            }
         }
    }


12 comments:

  1. what are basic problems faced when we are automating a project using selenium

    ReplyDelete
  2. How to get Response XML ??
    my code is like this
    @Test
    public void fullControl() throws Exception {
    WsdlProject project = new WsdlProject("D:\\WebServiceTesting\\TLGO-soapui-project.xml");

    List testSuites = project.getTestSuiteList();
    for( TestSuite suite : testSuites ) {

    List testCases=suite.getTestCaseList();
    for( TestCase testCase : testCases ) {
    String name=testCase.getName();

    System.out.println();

    System.out.println("Rajesh "+name);
    TestRunner runner2 = testCase.run(new PropertiesMap(), false);

    assertEquals(Status.FINISHED, runner2.getStatus());
    System.out.println("::::::::::::::"+runner2.toString());

    }
    }
    }

    ReplyDelete
  3. hi, i have tried using soapui-5.2.0.jar, nothing happens.
    tests are not triggered at all. what am i missing?

    ReplyDelete
  4. @shahin can you post your code?

    ReplyDelete
  5. thanks for the code..I have soapui project which is on another machine. How can I run that project on my machine using junit.

    ReplyDelete
  6. This comment has been removed by the author.

    ReplyDelete
  7. does this only work with soapui-4.5.1.jar? what about readyapi jar?

    ReplyDelete
    Replies
    1. it is also working for readyapi1.8.0 i got it to work with that version.

      Delete
  8. Hi All,

    I have some other query regarding above topic like How to add WS security header (KeyStore file already generated & added into classpath) in java programmatically since we are currently executing WsdlProject ( Loading testsuite details from project xml file) with the help of SOAP UI IDE.

    Setting:
    SoapUI.getSettings().setString(SSLSettings.KEYSTORE, "C:/dev/TestKeyStore");
    SoapUI.getSettings().setString(SSLSettings.KEYSTORE_PASSWORD, "password_123");

    WsdlProject project = new WsdlProject("PROJECT XML PATH");
    List testSuites = project.getTestSuiteList();
    for (TestSuite suite : testSuites){
    List testCases = suite.getTestCaseList();
    for (TestCase testCase : testCases){
    // do something
    }
    }

    Awaiting for your response!
    Thanks!

    ReplyDelete
  9. Hi All,

    I have some other query regarding above topic like How to add WS security header (KeyStore file already generated & added into classpath) in java programmatically since we are currently executing WsdlProject ( Loading testsuite details from project xml file) with the help of SOAP UI IDE.

    Setting:
    SoapUI.getSettings().setString(SSLSettings.KEYSTORE, "C:/dev/TestKeyStore");
    SoapUI.getSettings().setString(SSLSettings.KEYSTORE_PASSWORD, "password_123");

    WsdlProject project = new WsdlProject("PROJECT XML PATH");
    List testSuites = project.getTestSuiteList();
    for (TestSuite suite : testSuites){
    List testCases = suite.getTestCaseList();
    for (TestCase testCase : testCases){
    // do something
    }
    }

    Awaiting for your response!
    Thanks!

    ReplyDelete
  10. Hello All,

    I'm executing the same class. Maven build runs the class and executes tests and reports are generated but the build nevers ends. Is somemone facing the same problem?

    Thank You!

    ReplyDelete
  11. The method getTestCaseList() is undefined for the type TestSuite

    ReplyDelete

Leave your comments, queries, suggestion I will try to provide solution