Hi,
Got the failed assertions from the SoapUI test steps along with detailed message, exception and titles. Hope it will be useful to all those people who want to create reporting for open source version
/**
* to execute SoapUI test cases from a SoapUI project using Java
*/
public static void runSoapUITest(){
String suiteName = "";
String reportStr = "";
//instantiate lists for storing soapui test suites and test cases
List<TestSuite> suiteList = new ArrayList<TestSuite>();
List<TestCase> caseList = new ArrayList<TestCase>();
//Set the SoapUI stand alone server as test engine
SoapUI.setSoapUICore(new StandaloneSoapUICore(true));
// specified soapUI project
WsdlProject project = null;
try {
//@Todo: Make relative path in enhancements
//the file path need to be in a configuration file
String soapUIProjectFilePath="C:\\SoapUI\\NDC 3-soapui-project.xml";
//Path of the project location
project = new WsdlProject(soapUIProjectFilePath);
} catch (XmlException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SoapUIException e) {
e.printStackTrace();
}
// get a list of all test suites on the project
suiteList = project.getTestSuiteList();
// iterating through each suite
for(int i = 0; i < suiteList.size(); i++){
//Neglect if suite is disabled/inactive
if(suiteList.get(i).isDisabled()){
continue;
}
// get the test suite name000
suiteName = suiteList.get(i).getName();
System.out.println("Test Suite Is :" + suiteName );
reportStr = reportStr + "\nTest Suite: " + suiteName;
// get a list of all test cases from the test suite
caseList = suiteList.get(i).getTestCaseList();
WsdlTestCaseRunner runner;
// iterating through each test case
for(TestCase testcase : caseList){
//neglect the disabled/inactive test case
if (testcase.isDisabled())
{
continue;
}
//Getting the WsdlTestCaseRunner
runner = new WsdlTestCaseRunner((WsdlTestCase) testcase, new StringToObjectMap(testcase.getProperties()) );
//Running the Test Case
runner.run();
//Getting the result of each step
List<TestStepResult> results = runner.getResults();
System.out.println("Test Case : " + testcase.getName());
//iterating through the results of the test steps executed in the test case
for(TestStepResult result : results ){
TestStepStatus stepStatus = result.getStatus();
//printing the status , we can have a check here for OK , FAILED or UNKNOWN test cases
System.out.println("Test Step Is : "+ result.getTestStep().getName() + " Test Step Status Is : " + stepStatus.toString());
if (result instanceof WsdlTestRequestStepResult){
if(result.getMessages().length>0){
//Getting the error messages
String[] errStr = result.getMessages();
StringBuilder sb= new StringBuilder();
//iterating through the error messages
for(int ii=0;ii<errStr.length;ii++){
String asserWithExcptn=errStr[ii];
String assertName= asserWithExcptn.substring(0,asserWithExcptn.indexOf("]")+1);
String assertResult= asserWithExcptn.substring(asserWithExcptn.indexOf("]")+1, asserWithExcptn.length());
sb.append("The failed assertion #"+(ii+1)+" as follows.. \n");
sb.append("The assertion is: "+assertName+"\n");
sb.append("The message is:"+assertResult);
sb.append("\n");
}
System.out.println(sb.toString());
}
}
}
reportStr = reportStr + "\n\tTestCase: " + testcase.getName() + "\tStatus: " + runner.getStatus() + "\tReason: " + runner.getReason();
}
}
//'reportStr' has the status of all the test cases
System.out.println("The Execution Status as follows: \n"+reportStr);
}