2013-01-17 61 views
0

我正在尝试为现有的Java EE应用程序编写集成测试,该应用程序使用Seam和Hibernate并将其部署到Glassfish。为什么JUnit测试试图启动Seam时会引发InstantiationException?

但是测试目前无法在一开始就启动Seam。这似乎是因为它不能实例化Quartz Scheduler组件 - 请参阅下面的代码。异常堆栈跟踪也在下面。

任何帮助,将不胜感激......

这些可能是不必要的细节,但我写的描述here使用JUnit(而不是TestNG的)测试。该测试扩展了AbstractSeamT​​est,并具有@Test方法,用于实例化ComponentTest并覆盖testComponents,如here所述。在Maven的预集成阶段使用Cargo将应用程序部署到现有的本地Glassfish实例,并使用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

女巫缝版本您使用的?

此错误通常发生在某些依赖项无法注入到组件中时。 Bean EmailService在您的测试用例中成功启动?

+0

Seam版本2.2。我认为这个问题是由于它未能启动Seam并在各种论坛中寻找导致Seam与嵌入式JBoss一起工作而导致的相当多的痛苦。我注意到Seam 2.3文档已经放弃了SeamT​​est而转而使用Arquillian,但不幸的是,这不是我的选择,因为它是Glassfish版本2.1,而Arquillian仅支持3.1。 –

相关问题