Стратегии тестирования EJB? - PullRequest
7 голосов
/ 16 сентября 2010

Я работаю над приложением Java EE 6.Когда я начинал, я писал тесты для своих классов EJB, создавая экземпляр EJB вручную, а затем вручную добавляя элементы, которые обычно обеспечиваются путем внедрения зависимостей.Поскольку приложение становится более сложным, я обнаружил, что этот подход просто не сокращает его.Поэтому я хотел бы иметь возможность запускать свой собственный EJB-контейнер в тестовой среде, чтобы он мог управлять моими компонентами.Какой лучший способ подойти к этому?Я слышал о javax.ejb.embeddable.EJBContainer, есть ли другие варианты?

(я использую Glassfish 3 и строю с Maven, если это что-то меняет).

Ответы [ 4 ]

2 голосов
/ 16 сентября 2010

Что именно вы тестируете?Логика?Конфигурация?Вам нужно проверить классы EJB напрямую?Достаточно ли будет, чтобы ваши тесты вели себя как EJB-клиент против работающего контейнера?(Помните, что нет правила, согласно которому автоматизированные модульные тесты не должны требовать запуска тестируемой системы.)

Если вам нужно протестировать бизнес-логику, переместите этот код в POJO и протестируйте в обычном режиме;тогда вам не нужно будет тестировать POJO, работающие в контейнере, так как контейнер не должен влиять на бизнес-логику.

В подобной ситуации я никогда непосредственно не тестировал JUnit класс сервлета или StrutsКонтроллер класса.Я определенно проверяю POJO, от которых они зависят, и тестирую конечное приложение (работающее в контейнере сервлета, протестированное с помощью HtmlUnit), предполагая, что если конечное приложение работает, то и сантехника работает.

2 голосов
/ 16 сентября 2010

Я слышал о javax.ejb.embeddable.EJBContainer, есть ли другие варианты?

API EJBContainer является опцией. Другой будет использовать Arquillian SchrinkWrap ).

Еще несколько ссылок:

0 голосов
/ 24 января 2014

Теперь есть Arquillian , разработчикам больше не нужно возиться со встроенными контейнерами Java EE.

0 голосов
/ 16 сентября 2010

Я не совсем уверен, поможет ли это вашему делу, но взгляните на Дымовая труба .Лично я не работаю в пространстве EE (за пределами спецификации Servlet), но однажды я увидел презентацию по этому вопросу и похоже, что она может делать то, что вам нужно.

...