Abbiamo uno script Groovy che esce con uno status
di 0
quando tutto funziona e uno non-0 status
per diversi tipi di condizioni di errore. Ad esempio, se lo script ha preso un utente e un indirizzo email come argomenti, esso uscirebbe con un status
di 1
per un utente non valido e uno status
di 2
per un formato di indirizzo di posta elettronica non valido. Per questo usiamo System.exit(statusCode)
. Funziona bene, ma rende lo script difficile da scrivere per i casi di test.Come impostare lo stato di uscita in uno script Groovy
In un test creiamo il nostro GroovyShell
, crea il nostro Binding
e chiama shell.run(script,args)
. Per i test che affermano condizioni di errore, lo System.exit()
causa l'uscita dalla JVM (e dal test).
Esistono alternative all'utilizzo di System.exit()
per uscire da un Groovy Script? Ho sperimentato con generazione di eccezioni non gestite fanno, ma che ingombra l'uscita e fa sempre il codice di stato 1.
Nei nostri casi di test Ho anche sperimentato con l'utilizzo di System.metaClass.static.invokeMethod
per modificare il comportamento di System.exit()
di non uscire dalla JVM, ma che sembra come un brutto scherzo.
Grazie. Ho ripulito il nostro lavoro 'System.metaClass.static.invokeMethod' e sembrava molto meno hacky. – Patrick