2013-01-17 6 views
0

Я пытаюсь написать тест интеграции для существующего приложения Java EE, которое использует Seam и Hibernate и развертывается в Glassfish.Почему возникает событие InstantiationException, когда тест JUnit пытается запустить Seam?

Однако в настоящее время тест не запускает шов в самом начале. Кажется, это связано с тем, что он не может создать экземпляр компонента Quartz Scheduler - см. Код ниже. Трассировка стека исключений также ниже.

Любая помощь была бы оценена ...

Это могут быть ненужные подробности, но я написал тест с использованием JUnit (а не TestNG), как описано here. Тест расширяет AbstractSeamTest и имеет методы @Test, которые создают экземпляр ComponentTest и переопределяют testComponents, как описано here. Приложение развертывается в существующий локальный экземпляр Glassfish, используя Cargo в фазе предварительной интеграции Maven, и тест запускается с использованием плагина Failsafe.

InitialiseQuartz класс:

@Name("initialiseQuartz") 
@Scope(ScopeType.APPLICATION) 
@Startup 
public class InitialiseQuartz { 

    private QuartzTriggerHandle qth; 

    @In(create=true) 
    private EmailService emailService; 

    @Create 
    public void startSchedule() { 
     System.out.print("Schedule started"); 
     qth = emailService.generateDailyEmail("0 0 7 * * ?"); 
    } 

    @Destroy 
    public void stopSchedule() { 
     try { 
      qth.cancel(); 
     } catch (SchedulerException se) { 

     } 
    } 
} 

Стек след:

org.jboss.seam.InstantiationException: Could not instantiate Seam component: initialiseQuartz 
    at org.jboss.seam.async.AbstractDispatcher.extractAndValidateParameters(AbstractDispatcher.java:171) 
    at org.jboss.seam.async.AbstractDispatcher.createTimerSchedule(AbstractDispatcher.java:113) 
    at org.jboss.seam.async.ThreadPoolDispatcher.scheduleInvocation(ThreadPoolDispatcher.java:56) 
    at org.jboss.seam.async.ThreadPoolDispatcher.scheduleInvocation(ThreadPoolDispatcher.java:30) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) 
    at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32) 
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56) 
    at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28) 
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) 
    at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) 
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) 
    at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) 
    at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185) 
    at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103) 
    at org.jboss.seam.async.ThreadPoolDispatcher_$$_javassist_seam_3.scheduleInvocation(ThreadPoolDispatcher_$$_javassist_seam_3.java) 
    at org.jboss.seam.async.AsynchronousInterceptor.aroundInvoke(AsynchronousInterceptor.java:40) 
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) 
    at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) 
    at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185) 
    at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103) 
    at uk.police.kent.optica.schedule.EmailService_$$_javassist_seam_2.generateDailyEmail(EmailService_$$_javassist_seam_2.java) 
    at uk.police.kent.optica.schedule.InitialiseQuartz.startSchedule(InitialiseQuartz.java:26) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) 
    at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32) 
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56) 
    at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28) 
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) 
    at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77) 
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) 
    at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) 
    at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) 
    at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) 
    at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185) 
    at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103) 
    at uk.police.kent.optica.schedule.InitialiseQuartz_$$_javassist_seam_1.startSchedule(InitialiseQuartz_$$_javassist_seam_1.java) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) 
    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144) 
    at org.jboss.seam.Component.callComponentMethod(Component.java:2275) 
    at org.jboss.seam.Component.callCreateMethod(Component.java:2198) 
    at org.jboss.seam.Component.newInstance(Component.java:2158) 
    at org.jboss.seam.contexts.Contexts.startup(Contexts.java:304) 
    at org.jboss.seam.contexts.Contexts.startup(Contexts.java:278) 
    at org.jboss.seam.contexts.ServletLifecycle.endInitialization(ServletLifecycle.java:143) 
    at org.jboss.seam.init.Initialization.init(Initialization.java:744) 
    at org.jboss.seam.mock.AbstractSeamTest.startSeam(AbstractSeamTest.java:929) 
    at com.ipl.rdhi.acceptance.RdhiAdapterIT.setUpBeforeClass(RdhiAdapterIT.java:118) 

ответ

0

Witch Seam версии вы используете?

Эта ошибка возникает, когда некоторая зависимость не может быть введена в ваш компонент. Боб EmailService начинается с успеха в вашем тестовом сценарии?

+0

Шов версии 2.2. Я думаю, что проблема была вызвана тем, что он не смог запустить Seam и посмотреть на разных форумах, кажется, довольно много боли в попытке заставить Seam работать со встроенным JBoss. Я замечаю, что документация Seam 2.3 с тех пор оставила SeamTest в пользу использования Arquillian, но, к сожалению, это не вариант для меня, так как это Glassfish версии 2.1, а Arquillian поддерживает только 3.1. –

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