Как легко протестировать EJB с помощью JUnit - PullRequest
3 голосов
/ 03 ноября 2010

Я хочу протестировать корпоративный Java-бин (который впоследствии должен быть развернут на сервере JBoss) с использованием JUnit.Но я точно не знаю, как инструменты я могу использовать для этого.Простой JUnit не работает из-за отсутствующего EJB-контейнера и вызванного отсутствия необходимых инъекций.

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

Так что, пожалуйста, помогите, каков простой способ локально сгенерировать «фиктивный» контейнер, который может запускать тесты JUnit на корпоративных бинах?

Привет Бен

Ответы [ 5 ]

3 голосов
/ 04 ноября 2010

Я предлагаю вам взглянуть на Arquillian :

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

Все еще существует Embedded JBoss AS . Seam Framework также предоставляет среду тестирования со встроенным JBoss для запуска тестов компонентов (с TestNG) вашего приложения.

2 голосов
/ 04 ноября 2010

openEJB - это встроенный контейнер EJB, который идеально подходит для модульного тестирования EJB. Вы можете проверить их за пределами вашего обычного сервера приложений. И это быстро! И это быстро раскручивается! И это имеет плагин Eclipse для удобного управления! Должен любить это! Это было давно, есть множество обучающих программ о том, как его настроить и использовать, поэтому у вас не должно быть проблем с ним.

1 голос
/ 04 ноября 2010

Это было некоторое время, но я всегда писал свои EJB как простые обертки POJO.Интерфейс будет определять методы, и POJO, и EJB (конечно, сеанс) будут реализовывать этот интерфейс.

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

1 голос
/ 03 ноября 2010

Вы можете использовать удаленный клиент EJB в вашей программе JUnit для проверки вашего EJB. Единственным недостатком является то, что во время тестирования у вас должен быть запущен сервер приложений.

Проверьте эту запись в блоге , чтобы узнать, как удаленно вызывать EJB.

0 голосов
/ 23 июля 2015

Поскольку я не нуждался в JNDI (например, Не могу создать экземпляр класса: org.jnp.interfaces.NamingContextFactory ), в целом в моих тестах DAO (интерфейс ORM) этого было достаточно мне

  • включает баночки спящего в пути к классам
  • удалить / закомментировать <jta-data-source>...</jta-data-source> часть в my persistence.xml
  • внедрить / назначить свой собственный объект управления предприятием с Persistence.createEntityManagerFactory( "my-persistence-unit-name" )
...