Zugreifen auf Dateiressourcen in SoapUI Mock Service, der in tomcat bereitgestellt wird

8

Problem in Kürze: Zugreifen auf lokale file in SCRIPT Dispatcher in Bezug auf den Projektpfad, z. B. def file = new File(groovyUtils.projectPath+"/${responseFileName}.xml") . Dies funktioniert einwandfrei , wenn der Test von SoapUI als Mock Service ausgeführt wird. Geben Sie jedoch nothing or empty für die obige Anweisung ( groovyUtils.projectPath ) ein, wenn derselbe Test für Bereitgestellter (remote tomcat) ausgeführt wird.

  

Hinweis: Hier ist responseFileName am selben Ort (beim Ausführen des SoapUI-Tools) relativ zum soapui project xml

vorhanden

Weitere Details zum Problem:

Wollte den obigen Scheindienst in Tomcat bereitstellen. Also, erstellt Krieg mit Als Krieg implementieren von SoapUI , hat dies eine .war -Datei erstellt. Wenn .war extrahiert wird, zeigt es die folgende Verzeichnisstruktur.

%Vor%

Und das soapui project xml ist unter WEB-INF/soapui Verzeichnis vorhanden.

Da Script dispatcher groovyUtils.projectPath verwendet und .war datei nicht diese responseFile hat, wurde die erforderliche responseFile unter WEB-INF/soapui directory mit dem Dienstprogramm 7zip hinzugefügt. Und die aktualisierte .war -Datei in Tomcat bereitgestellt, die erfolgreich ist.

Wenn die Testanfrage auf den bereitgestellten Testdienst angewendet wird, wird leere Antwort und der folgende stacktrace angezeigt. stark> in tomcat's catalina.out:

%Vor%
  • So verweisen Sie die Ressourcendateien im SCRIPT Dispatcher so, dass sie auf beide Arten funktionieren:

    a. Mock-Service mit in SoapUI

    b. implementierter Schein-Service in Tomcat

Übrigens bin ich mir nicht sicher, ob etwas in der Art, wie es gemacht wird, falsch ist.

Verwenden:

SoapUI Open Source Edition - 5.2.1

Apache Tomcat - 8.0.5

Update: was bereits versucht wurde, abgesehen von der oben genannten in der kurzen Beschreibung

In Script Dispatcher sind nur die folgenden Variablen (unterstrichen) verfügbar

Und wenn Sie context in Script Dispatcher verwenden, funktioniert leider keine der üblichen Methoden für den Servlet-Kontext , wie zB

  

Keine Signatur der Methode: com.eviware.soapui.impl.wsdl.mock.WsdlMockRunContext.getResourceAsStream () ist anwendbar

     

Keine Signatur der Methode: com.eviware.soapui.impl.wsdl.mock.WsdlMockRunContext.getRealPath () ist anwendbar

Offensichtlich, weil die API von SoapUI für WsdlMockRunContext nicht funktioniert haben solche öffentlichen Methoden zur Verfügung.

Ich glaube, dass es einen anderen Weg geben muss, den ich nicht kenne und den ich von der Gemeinschaft wissen möchte.

    
Rao 17.01.2016, 05:19
quelle

1 Antwort

7

Das Hauptproblem ist: groovyUtils.projectPath arbeitet nur für den ersten Anwendungsfall und erhält nichts für den zweiten Anwendungsfall.

Nach viel Test & amp; Fehler und suchen Sie im Internet, fand einen Hinweis in einem der Beispiele und der folgende Ansatz funktionieren, um auf die lokale Dateiressource beide unter den in der Frage erwähnten Anwendungsfällen zugreifen zu können.

  • läuft als Mock-Service von soapUI selbst
  • als Krieg im Remote-Tomcat eingesetzt

Also den Code geändert ( Skript von mock dispatcher ) und von:

%Vor%

zu:

%Vor%
  

Hinweis: Datei (Ressource) muss am selben Ort verfügbar sein   wo soapui Projektdatei auf dem Datenträger vorhanden ist, dh nach createin .war datei, update .war datei und stelle sicher, dass die erforderliche Datei unter WEB-INF/soapui steht, wo soapui's Projekt-XML verfügbar ist .

    
Rao 24.01.2016, 10:50
quelle

Tags und Links