2014-12-10 17 views
7

sto usando un passo Groovy con Soapui. Il seguente codice funziona bene ma sembra essere lungo e ripetitivo:Come usare if else statement con Groovy?

if(response.comp.type[3] == "value1") 
log.info ("value1 is present") 
else 
log.info ("value1 is not present") 

if(response.comp.bucket[3] == null) 
log.info ("bucket = null") 
else 
log.info ("bucket is not null") 

if(response.comp.cycle[3] == "new") 
log.info ("settings cycle = new") 
else 
log.info ("settings cycle is null") 

E 'possibile fare lo stesso in una prova invece di ripetere l'IF e ELSE su ogni linea. ho provato con TRY CATCH ma non posso avere la traccia dello stack dell'errore.

Qualcuno può aiutare a ridurre il codice. Grazie

+0

Come per esempi, risposte e commenti, sto trovando questo difficile da generalizzare, sembra che ogni caso sia piuttosto specifico. – Will

risposta

3

Non so se questo sarà di vostra preferenza ma è possibile utilizzare switch invece di avere una lunga if..else dichiarazione come:

def x = response.comp.type[3] 
switch(x){ 
    case "value1" : log.info("value1 is present") 
    ... 
    default: log.info("value is not present") 
} 

dove x è il valore si assegna ad esso. e fare lo stesso per response.comp.bucket[] e response.comp.cycle[]

Modifica

ho modificato il codice, dichiarata x come il titolare del response.comp.type [3] e controlla se ha la "valore1".

+0

ho aggiunto questa riga prima del codice def x = new int [0,1,2,3,4,5] e questo caso 3: log.info ("valore1 è presente") non funziona per me –

+0

cosa intendevo mettendo x in 'response.comp.try [x]' è che il valore di esso dipende da cosa ci metterete dentro. in base al tuo esempio hai 'response.comp.type [3]' quindi dovrai metterlo nell'istruzione switch come 'switch (response.comp.type [3])' – nap011

9

come i campi sono tutti diversi è ancora necessario fare ogni controllo, ma una forma più concisa sarebbe:

log.info (response.comp.type[3] == "value1" ? "value1 is present" : "value1 is not present") 
log.info (response.comp.bucket[3] == null ? "bucket = null" : "bucket is not null") 
log.info (response.comp.cycle[3] == "new" ? "settings cycle = new" : "settings cycle is null") 

Con un piccolo sforzo si potrebbe ridurre la duplicazione, ma con il rischio di rendere il codice più difficile da leggere. Per esempio.

log.info "bucket ${response.comp.bucket[3] == null ? '=' : 'is not'} null" 

Come si può vedere, in questo caso almeno, il secondo modulo è più difficile da leggere.

+0

Grazie Michael, il secondo codice, Devo creare una variabile in proprietà e creerò almeno 30, potrebbe essere una soluzione –

+0

Ma il problema la risposta potrebbe cambiare, quindi non posso aggiornare ogni volta, se posso questo complicherà il codice –