2010-11-03 3 views
3

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

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

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

Привет Бен

ответ

1

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

Откажитесь от this blog entry для примера о том, как вызывать EJB удаленно.

3

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

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

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

2

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

1

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

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

0

Поскольку я не нужен материал JNDI (например, Cannot instantiate class: org.jnp.interfaces.NamingContextFactory) вообще в моей DAO (интерфейс ОРМ) проверяет, что было достаточно для меня, чтобы

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