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