Мне поручено настроить некоторые тесты JUnit для приложения-утилиты, которое требуется для System.exit (1) при различных обстоятельствах, и System Rules отлично подходит для тестирование. Приложение также может работать в режиме графического интерфейса, и оно выдает небольшой JFrame. Когда он выполняется в контексте теста JUnit с применяемым правилом ExpectedSystemExit, по мере создания JFrame что-то скрытно выходит из jvm. Выключите правило ExpectedSystemExit, и тест будет выполняться так, как должен, выталкивая JFrame просто отлично, я просто не могу тестировать jvm exit() s.Использование системных правил для перехвата System.exit() не выполняется с помощью окон Swing
Догадка заключается в том, что системные правила SecurityManager 1.9.0 устанавливаются на место - это запрещение некоторых разрешений. Я все еще собираюсь собирать дополнительную информацию об отладке. До тех пор, есть ли известное решение этой проблемы?
Вы ссылающийся 'setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE)'? Он вызывает 'SecurityManager.checkExit', которые системные правила интерпретируют как' exit() '. –
@Banthar Действительно, дальнейшая отладка показывает, что 'setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE)' запускает exit(). Ну что теперь? –