2016-06-20 4 views
0

javaコードを使用して私のテストケースof soap uiの特定のテストステップを実行したいと思います。私の問題は、匿名の内部型であるTestCaseランナーとインターフェースであるTestCaseRunContextの引数が必要なテストステップレベルで実行しようとするときです。私は同じを実行するために両方を実装する必要がありますか?はいの場合、それを行う方法を任意のサンプルを喜ばせることができますか?特定の方法を実行する方法javaのsoapUiのテストステップ

は、ここで私はこのような何かを持って異なるものを試した後、私のコード

package com.testauto.soaprunner.soap.impl; 
import java.sql.Timestamp; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.Iterator; 
import java.util.List; 
import java.util.Map; 
import java.util.Map.Entry; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

import com.eviware.soapui.SoapUI; 
import com.eviware.soapui.StandaloneSoapUICore; 
import com.eviware.soapui.impl.wsdl.WsdlProject; 
import com.eviware.soapui.impl.wsdl.WsdlTestSuite; 
import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase; 
import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner; 
import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestStep; 
import com.eviware.soapui.model.TestPropertyHolder; 
import com.eviware.soapui.model.iface.MessageExchange; 
import com.eviware.soapui.model.propertyexpansion.PropertyExpansionUtils; 
import com.eviware.soapui.model.testsuite.TestCase; 
import com.eviware.soapui.model.testsuite.TestCaseRunContext; 
import com.eviware.soapui.model.testsuite.TestProperty; 
import com.eviware.soapui.model.testsuite.TestStepResult; 
import com.eviware.soapui.model.testsuite.TestSuite; 
import com.eviware.soapui.support.types.StringToObjectMap; 
import com.eviware.soapui.support.types.StringToStringsMap; 
import com.testauto.soaprunner.data.InputData; 
import com.testauto.soaprunner.data.ReportData; 

public class RunTestImpl{ 

    static Logger logger = LoggerFactory.getLogger(RunTestImpl.class); 
    List<ReportData> reportDatList=new ArrayList<ReportData>(); 
    public List<ReportData> process(Map<String, String> readDataMap, InputData input, Map<List<String>, String> configurationMap, List<String> configuration, WsdlTestSuite testSuite) 
    { 
     List<ReportData> report = new ArrayList<ReportData>(); 
      logger.info("Into the Class for running test cases"); 
      try{ 
    report= getTestSuite(readDataMap,input,configurationMap,configuration,testSuite); 
      } 
      catch(Exception e) 
      { 
       logger.info(e.getMessage()); 
      } 
      return report; 
    } 

    private List<ReportData> getTestSuite(Map<String, String> readDataMap, InputData input, Map<List<String>, String> configurationMap, List<String> configuration, WsdlTestSuite testSuite) throws Exception { 

     ReportData report=new ReportData(); 

     logger.info("Into the Class for running test cases"); 

     String suiteName = ""; 
     String reportStr = ""; 






    List<String> testCaseNameList= setPropertyValues(readDataMap,input); 





     WsdlTestCaseRunner runner = null; 

     List<TestSuite> suiteList = new ArrayList<TestSuite>(); 
     List<TestCase> caseList = new ArrayList<TestCase>(); 

     SoapUI.setSoapUICore(new StandaloneSoapUICore(true)); 


     System.out.println("testcase name "+ configurationMap.get(configuration)); 

    // WsdlTestCase testCase= testSuite.getTestCaseByName(input.getApiName()+"_"+testCaseName+"_TestCase"); 
     WsdlTestCase testCase= testSuite.getTestCaseByName("my_TESTCASE"); 

     WsdlTestStep tesStep=testCase.getTestStepByName(configurationMap.get(testCaseNameList)); 
System.out.println("test case name:"+testCase.getName()); 
report.setTestCase(testCase.getName()); 


     suiteList.add(testSuite); 






    runner= tesStep.run(?,?); 






     return reportDatList; 
    } 
    private List<String> setPropertyValues(Map<String, String> readDataMap, InputData input) { 
     String testCaseName=""; 
     TestPropertyHolder holder = PropertyExpansionUtils.getGlobalProperties(); 
     List<String> dataConfigurationList=new ArrayList<String>(); 
     Iterator entries = readDataMap.entrySet().iterator(); 
      while (entries.hasNext()) { 
       Entry thisEntry = (Entry) entries.next(); 
      String key = (String) thisEntry.getKey(); 
      String value = (String) thisEntry.getValue(); 

       testCaseName+=key; 
       holder.setPropertyValue(key, holder.getPropertyValue(key)); 
       dataConfigurationList.add(key); 

        } 


     System.out.println("testCaseName"+testCaseName); 
      return dataConfigurationList; 

    } 

    } 

} 
+0

[this](https://www.soapui.org/test-automation/junit/junit-integration.html)が役立つかどうかをご覧ください。 – Rao

+0

私はそれがテストケースレベルで動作するのを見ましたが、私はテストステップレベルで欲しいです。これは私が問題に言及した方法を実行しています – LowCool

+0

あなたはこのように実行する必要がありますか? SoapUIを使って得られるメリットは何ですか? – Rao

答えて

1

です。

TestCaseRunContext context = new MockTestRunContext(new MockTestRunner(testStep.getTestCase()), testStep); 

     MockTestRunner runner = new MockTestRunner(testStep.getTestCase()); 

     TestStepResult testStepResult= testStep.run(runner, context); 

このトリックがどのように機能するのかわかりません。誰かがこの背後にある理由を知っている場合は、

関連する問題