Ответ 1
Если по модульному тестированию вы имеете в виду... единичное тестирование (тестирование отдельного устройства), то на самом деле вам не нужна какая-либо конкретная структура, поскольку EJB3.0 представляет собой не что иное, как аннотированные POJO и, следовательно, можно относительно легко протестировать без любое специальное приспособление.
Теперь, если вы имеете в виду что-то еще - например, тестирование интеграции или функциональное тестирование - тогда да, инструменты могут помочь и упростить вещи (но вы действительно должны начать использовать правильную терминологию:) Предположим, что это то, что вы имеете в виду.
Во-первых, JUnitEE кажется мертвым и устаревшим, и я даже не уверен, что он имеет что-то для EJB3.x. Во-вторых, я не впечатлен поддержкой Java EE 5 Cactus и развертывание тестов Cactus является болезненным (я думаю, что Cactus был приятным для J2EE 1.4, но сейчас немного устарел). Таким образом, это оставляет нам Ejb3Unit, который, на мой взгляд, лучший вариант, особенно если вы хотите запустить из контейнерасильные > тесты, то есть без реального развертывания приложения (намного быстрее).
Если вы хотите запускать тесты в контейнере, тогда вы действительно можете использовать встроенный контейнер, и мои текущие предпочтения относятся к GlassFish v3, даже для Java EE 5 (возможно, я ошибаюсь, но я довольно разочарован временем начала последних выпусков JBoss, поэтому он не получает большого внимания). См. Сообщение GlassFish Embedded Reloaded, сервер приложений в кармане для примера кода (который вы можете использовать из своих тестов) или Использование плагина maven для встроенных стеклянных рыб v3 (если вы используете maven).
Другим вариантом было бы упаковать и развернуть ваше приложение с помощью Cargo, а затем запустить несколько тестов против развернутого приложения (с помощью Selenium или BDD-инструмент, например). Это может быть полезно, если вы хотите запускать сквозные тесты с помощью контейнера, который не предоставляет встроенного API.
Итак, чтобы ответить на ваш последний вопрос, я бы действительно использовал доступные инструменты, возможно, их комбинацию, для тестов, которые не являются модульными тестами, и не будут издеваться над самим собой, если они не покрывают некоторые потребности о котором я не могу сейчас думать.