2013-01-16 11 views
10

Come posso includere lo script Groovy da un file esterno? enter image description hereSOAPUI: Come includere lo script Groovy da un file esterno

mi è stato provato ad usare:

def script = new GroovyScriptEngine('d:/soapui/payment.v2').with { 
    loadScriptByName('proxy.groovy') 
} 
this.metaClass.mixin script 

Ma ottengo:

enter image description here

Aggiornamento

C'è esiste qualche possibilità di confezionare i miei metodi in vaso o qualcosa del genere, e usarli da Script TextArea?

risposta

14

Il modo più semplice è quello di eseguire utilizzando Groovy test Fase entro SoapUI

import groovy.lang.Binding 
import groovy.util.GroovyScriptEngine 

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 

// location of script file is relative to SOAPUI project file. 
String scriptPath = groovyUtils.projectPath + "/groovy/" 

// Create Groovy Script Engine to run the script. 
GroovyScriptEngine gse = new GroovyScriptEngine(scriptPath) 

// Load the Groovy Script file 
externalScript = gse.loadScriptByName("Utility.groovy") 

// Create a runtime instance of script 
instance = externalScript.newInstance() 

// Sanity check 
assert instance!= null 

// run the foo method in the external script 
instance.foo() 
+0

un po 'tardi come wel, ma succede quando esporti il ​​progetto come WAR? hai quindi bisogno di una groovy/directory da qualche parte sul server? – Dave

+0

Non l'ho provato, ma se fosse relativo al progetto dovrebbe funzionare bene. –

1

Prova questo:

GroovyShell gs = new GroovyShell(getBinding()); 
gs.evaluate(new File('path/to/external.groovy').text); 

O anche questo:

evaluate(new File('path/to/external.groovy')); 
+0

Ho ottenuto 'java.lang.Exception non può ottenere la proprietà 'requestContext' sul messaggio null object' per entrambi. li hai controllati prima di pubblicare? – CAMOBAP

+0

Controlla il codice nel tuo file esterno. Il motore Groovy lo eseguì e ottenne un'eccezione. Sostituisci il contenuto del file esterno con un semplice comando per vedere come funziona: log.info "Hello from external file" –

+0

Quando ho inserito il contenuto del file esterno in Script TextArea funziona perfettamente. Il problema si verifica ogni volta che provo ad accedere a 'log',' context', 'requestContext',' mockRequest' e 'mockResponse' variabili – CAMOBAP

0

Per il messaggio di errore mixin, si potrebbe sbarazzarsi di che se si utilizza ExpandoMetaClass.enableGlobally() e poi this.metaClass = null. proprio all'inizio, prima di iniziare a mescolare in.

2

È inoltre possibile creare i propri script in Java (Eclipse) e poi esportarlo come un barattolo e aggiungi in soapui.

Ecco il passo:

  1. Crea il codice in classi Java all'interno di un pacchetto.
  2. clic destro sul pacchetto e l'esportazione (selezionare jar)
  3. Aggiungi questo barattolo cartella SoapUI/bin/ext (accertarsi di chiudere SoapUI prima di questo passaggio)
  4. riavvio SoapUI e ora è possibile importare ed uso le sceneggiature dentro soapui come sotto.

  5. Creare un passo groove e importare il vaso

    importazione pacchetto name.class nome

  6. chiamata la funzione come:

    nome della classe name.function (parametro);

Problemi correlati