Как выполнить модульное тестирование кода Java, который должен выполняться в диспетчере безопасности апплета

У меня есть некоторый код библиотеки Java, который иногда работает как неподписанный апплет. Из-за этого не всегда разрешены некоторые операции (например, проверка системных свойств).

Я хотел бы запустить некоторые модульные тесты с помощью менеджера безопасности, похожего на апплет, чтобы я мог убедиться, что код либо не выполняет никаких ограниченных операций, либо правильно обрабатывает любые исключения безопасности.

Как лучше всего запустить эти модульные тесты с реалистичной конфигурацией Security-Manager? Предпочтительным решением было бы что-то, что может интегрироваться с JUnit.


person lexicalscope    schedule 26.01.2010    source источник
comment
проверьте, может ли это помочь вам stackoverflow.com/questions/433065/   -  person rsilva4    schedule 27.01.2010
comment
Спасибо. Я не пытаюсь протестировать апплет как таковой (например, в моем коде нет пользовательского интерфейса), это некий библиотечный код, который иногда подключается и запускается внутри апплета (иногда кем-то другим). Я не вижу ничего в документации FEST о SecurityManager, но я посмотрю еще немного.   -  person lexicalscope    schedule 28.01.2010


Ответы (1)


Не решение как таковое, но не могли бы вы реализовать свой собственный подкласс SecurityManager, возможно, делегируя все вызовы «менеджеру псевдобезопасности», который, в свою очередь, будет высмеиваться EasyMock/подобным? Затем вы можете установить этот SecurityManager, используя System.setSecurityManager().

Если вы знаете, что должен делать ваш апплет, вы можете провалить тест в зависимости от ваших требований.

Возможно, я пропустил то, чего вы хотите достичь, но это похоже на один из возможных подходов.

person Rich    schedule 27.01.2010
comment
Знаете ли вы, как создать реалистичный менеджер безопасности апплета? Мне немного противно пытаться воспроизвести правила безопасности апплета самостоятельно, даже если я правильно понял их, мне может быть сложно поддерживать их в актуальном состоянии. Подход, который я использовал до сих пор, заключается в определении тонкого уровня адаптера между привилегированными операциями безопасности и остальной частью моего кода, а затем я имитирую этот слой. Но я думаю, что действительно хочу проверить интеграцию между моим кодом и реальным (или реалистичным) SecurityManager. - person lexicalscope; 28.01.2010
comment
Боюсь, что нет - можно ли создать экземпляр менеджера безопасности апплета по имени класса? Возможно, вы могли бы узнать это из тестового апплета? - person Rich; 28.01.2010