2014-02-04 5 views
3

У меня есть приложение, работающее на JBoss AS 7.1.1. Это приложение использует некоторые ресурсы спецификации КДИ в качестве перехватчиков, инъекции и т.д. Архитектура мое приложение очень просто с ниже структурой:Inject CDI bean в скрипте теста Junit

вид (Xhtml и Facelets)

контроллер (управляемые компоненты с @Named, за исключением в ViewScoped)

модель (разделена на два слоя, обслуживания и DAO)

обслуживание (с @Stateless аннотации, здесь я использую перехватчик, который я создал для управления операциями с базой данных, потому что я использую родной JDBC)

дао

мне нужно для создания некоторых сценариев для тестирования уровня сервиса приложения, внедрения реализации службы и вызова бизнес-методов.

Я считаю, что эта архитектура очень распространена. Прошу прощения за мой английский.

Может кто-нибудь мне помочь, пожалуйста?

Спасибо!

ответ

3

Если вы хотите протестировать свой полный контейнер, вы, вероятно, захотите Arquillian. Если вы хотите выполнить модульное тестирование с помощью mocks, запустите автономный контейнер для сварки в своем испытании с использованием сварного шва.

new Weld().initialize().instance().select(YourClassName.class).get(); 

Вы можете заменить свои макеты объектами, используя альтернативы в beans.xml. Вы также можете использовать CDI-Unit, что немного упрощает процесс.

+0

У этого CDI-модуля есть другие зависимые библиотеки? Я попытался использовать его, но возникла ошибка. Вы знаете, как правильно настроить CDI-Unit? Спасибо! – djeremias

+0

Я сделал то, что вы рекомендуете bblonski, но эта ошибка возникает: 'org.jboss.weld.context.ContextNotActiveException: WELD-001303: нет активных контекстов для области видимости javax.enterprise.context.RequestScoped \t at org.jboss.weld. manager.BeanManagerImpl.getContext (BeanManagerImpl.java:680) \t в org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance (ContextBeanInstance.java:79) \t в org.jboss.weld.bean.proxy.ProxyMethodHandler. вызывать (ProxyMethodHandler.java:99) \t в org.jboss.weld.proxies.CommonDataSource $ DataSource $ обертке $ -896135856 $ Proxy $ _ $$ _ WeldClientProxy.getConnection (Unknown Source) более \t ... ' – djeremias

+1

ли ты попробуйте использовать @InRequestScoped CDI-Unit annota Тион? http://jglue.org/cdi-unit-user-guide/#scopes В противном случае, если вы хотите симулировать полный цикл запросов из своего контейнера, вам может быть повезло с Аркиллиан. Используйте CDI-Unit для тестирования библиотечных и служебных методов низкого уровня и Arquillian для проверки пользовательских запросов и данных сеанса. –

Смежные вопросы