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