Mamy Groovy Script, który kończy się status
z 0
, gdy wszystko działało i non-0 status
dla różnych rodzajów warunków awarii. Na przykład, jeśli skrypt wziął użytkownika i adres e-mail jako argumenty, zakończyłby się status
z 1
dla nieprawidłowego użytkownika i status
z 2
dla nieprawidłowego formatu adresu e-mail. Używamy do tego System.exit(statusCode)
. Działa to dobrze, ale sprawia, że skrypt jest trudny do napisania przypadków testowych.Jak ustawić status wyjścia w Groovy Script
Podczas testu tworzymy naszą GroovyShell
, tworzymy naszą Binding
i dzwonimy pod numer shell.run(script,args)
. W przypadku testów potwierdzających warunki niepowodzenia, System.exit()
powoduje wyjście JVM (i testu).
Czy istnieją alternatywy dla używania System.exit()
do zamykania skryptu Groovy? I eksperymentowali z rzucania niezłapane wyjątki, ale to zaśmiecanie wydajność i zawsze sprawia, że kod statusu 1.
W naszych testach Mam również eksperymenty z użyciem System.metaClass.static.invokeMethod
aby zmienić zachowanie System.exit()
aby nie wyjść z JVM, ale wydaje się, że jak brzydki hack.
Dzięki. Oczyściłem naszą pracę 'System.metaClass.static.invokeMethod' i wyglądało to o wiele mniej hacky. – Patrick