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
Hinweis: Hier ist
vorhandenresponseFileName
am selben Ort (beim Ausführen des SoapUI-Tools) relativ zumsoapui project xml
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.
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.
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.
soapUI
selbst 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 unterWEB-INF/soapui
steht, wo soapui's Projekt-XML verfügbar ist .