如何从Java运行soapUI测试

我需要通过Java运行SoapUI测试。 你能告诉我有用的链接吗? 如果你能告诉我如何加载/运行测试(代码示例),我会很高兴。

我还发现只有一个链接适用于我的项目 – http://pritikaur23.wordpress.com/2013/06/16/saving-a-soapui-project-and-sending-requests-using-soapui-api/ 。

但是,当我尝试做同样的事情时,我遇到了以下错误 –

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(Ljava/lang/ClassLoader;Ljava/lang/String;)Lorg/apache/xmlbeans/SchemaTypeSystem; 

这很奇怪,因为我添加了所有需要的jar文件。 我甚至尝试过不同版本的xmlbeans。

预先感谢。

我找到了如何通过代码运行soapUI测试的方法。


小解释:

首先 – 我创建了一个maven项目并将依赖项添加到pom.xml而不是直接包含.jar。 对于SoapUI,需要添加以下依赖项:

   com.github.redfish4ktc.soapui maven-soapui-extension-plugin 4.6.4.0  

其次 – 我还添加了一些依赖项,因为我有一个例外

 java.lang.NoSuchMethodError 

所需的依赖项:

   net.java.dev.jgoodies looks 2.1.4   net.sf.squirrel-sql.thirdparty-non-maven com-fifesoft-rsyntaxtextarea 1.0.0   org.apache.karaf.eik.plugins org.apache.commons.collections 3.2.1  

在准备环境之后,我能够编写代码。 我向您展示了一个代码示例,该代码能够通过Java在指定的soapUI项目中运行所有测试套件和测试用例。

  // method for running all Test Suites and test cases in the project public static void getTestSuite() throws Exception { String suiteName = ""; String reportStr = ""; // variables for getting duration long startTime = 0; long duration = 0; TestRunner runner = null; List suiteList = new ArrayList(); List caseList = new ArrayList(); SoapUI.setSoapUICore(new StandaloneSoapUICore(true)); // specified soapUI project WsdlProject project = new WsdlProject("your-soapui-project.xml"); // get a list of all test suites on the project suiteList = project.getTestSuiteList(); // you can use for each loop for(int i = 0; i < suiteList.size(); i++){ // get name of the "i" element in the list of a test suites suiteName = suiteList.get(i).getName(); reportStr = reportStr + "\nTest Suite: " + suiteName; // get a list of all test cases on the "i"-test suite caseList = suiteList.get(i).getTestCaseList(); for(int k = 0; k < caseList.size(); k++){ startTime = System.currentTimeMillis(); // run "k"-test case in the "i"-test suite runner = project.getTestSuiteByName(suiteName).getTestCaseByName(caseList.get(k).getName()).run(new PropertiesMap(), false); duration = System.currentTimeMillis() - startTime; reportStr = reportStr + "\n\tTestCase: " + caseList.get(k).getName() + "\tStatus: " + runner.getStatus() + "\tReason: " + runner.getReason() + "\tDuration: " + duration; } } // string of the results System.out.println(reportStr); } 

输出:

 Test Suite: TS_ONE TestCase: TC_ONE Status: FAILED Reason: Cancelling due to failed test step Duration: 1549 TestCase: TC_TWO Status: FINISHED Reason: {} Duration: 1277 ... TestCase: TC_N Status: FAILED Reason: Cancelling due to failed test step Duration: 1282 Test Suite: TS_TWO TestCase: TC_BlaBla Status: FINSHED Reason: {} Duration: 1280 ... 

我希望上面的信息对某人有帮助。

使用连续集成服务器(例如Hudson非常适合),可以自动运行unit testingJUnit格式。 下面是在JUnit测试中集成SoapUI项目的示例。

 public void testRunner() throws Exception { SoapUITestCaseRunner runner = new SoapUITestCaseRunner(); runner.setProjectFile( "src/dist/sample-soapui-project.xml" ); runner.run(); } 

更多信息在这里 。

@HeLL提供的代码需要仅与Currentyl相关的SoapUI依赖关系

   com.smartbear.soapui soapui 5.1.3 test