У нас есть сценарий Groovy, который завершается с status
из 0
, когда все работает, и non-0 status
для различных типов условий сбоя. Например, если сценарий принимает пользователя и адрес электронной почты в качестве аргументов, он завершается с status
из 1
для недопустимого пользователя и status
из 2
для недопустимого формата адреса электронной почты. Мы используем System.exit(statusCode)
для этого. Это прекрасно работает, но усложняет сценарий для написания тестовых примеров.
В тесте мы создаем наш GroovyShell
, создаем наш Binding
и вызываем shell.run(script,args)
. Для тестов, которые утверждают условия отказа, System.exit()
вызывает выход JVM (и теста).
Существуют ли альтернативы использованию System.exit()
для выхода из сценария Groovy? Я экспериментировал с генерацией необработанных исключений, но это загромождает вывод и всегда делает код состояния 1.
В наших тестовых примерах я также экспериментировал с использованием System.metaClass.static.invokeMethod
, чтобы изменить поведение System.exit()
, чтобы не выходить из JVM, но это похоже на уродливый хак.