Hi,

When using ApplicationComposer and mockito together in the following test 
example:

package eg;

import javax.inject.Inject;

import org.apache.openejb.junit.ApplicationComposerRule;
import org.apache.openejb.mockito.MockitoInjector;
import org.apache.openejb.testing.CdiExtensions;
import org.apache.openejb.testing.MockInjector;
import org.apache.openejb.testing.Module;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestRule;
import org.mockito.Mock;
import org.mockito.Mockito;

public @CdiExtensions class MyTest {
        
        public interface MyDependency {
                
                void call();
        }
        
        public static class MyBean {
                
                private @Inject MyDependency myDependency;
                
                public void doSomething() {
                        myDependency.call();
                }
        }
        
        public final @Rule TestRule composer = new 
ApplicationComposerRule(this);
        
        public @Module Class<?> beanClass() {
                return MyBean.class;
        }
        
        public @MockInjector Class<?> mockInjector() {
                return MockitoInjector.class;
        }
        
        private @Mock MyDependency myDependency;
        private @Inject MyBean myBean;
        
        public @Test void test() {
                myBean.doSomething();
                Mockito.verify(myDependency).call();
        }
}

I get the following exception:

SEVERE - CDI Beans module deployment failed
org.apache.webbeans.exception.WebBeansDeploymentException: 
javax.enterprise.inject.UnsatisfiedResolutionException: Api type 
[eg.MyTest$MyDependency] is not found with the qualifiers 
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name :  myDependency, Bean 
Owner : [MyBean, WebBeansType:MANAGED, Name:null, API 
Types:[eg.MyTest$MyBean,java.lang.Object], 
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
        at 
org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:325)
        at 
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
        at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:193)
        at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
        at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:895)
        at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:694)
        at 
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:690)
        at 
org.apache.openejb.testing.ApplicationComposers.deployApp(ApplicationComposers.java:721)
        at 
org.apache.openejb.testing.ApplicationComposers.before(ApplicationComposers.java:383)
        at 
org.apache.openejb.testing.ApplicationComposers.evaluate(ApplicationComposers.java:1060)
        at 
org.apache.openejb.junit.DeployApplication.evaluate(DeployApplication.java:40)
        at org.junit.rules.RunRules.evaluate(RunRules.java:20)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api type 
[eg.MyTest$MyDependency] is not found with the qualifiers 
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name :  myDependency, Bean 
Owner : [MyBean, WebBeansType:MANAGED, Name:null, API 
Types:[eg.MyTest$MyBean,java.lang.Object], 
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
        at 
org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatisfiedResolutionException(InjectionExceptionUtil.java:65)
        at 
org.apache.webbeans.container.InjectionResolver.checkInjectionPoint(InjectionResolver.java:234)
        at 
org.apache.webbeans.container.BeanManagerImpl.validate(BeanManagerImpl.java:1199)
        at 
org.apache.webbeans.util.WebBeansUtil.validate(WebBeansUtil.java:1709)
        at 
org.apache.webbeans.config.BeansDeployer.validate(BeansDeployer.java:909)
        at 
org.apache.webbeans.config.BeansDeployer.validateInjectionPoints(BeansDeployer.java:820)
        at 
org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:305)
        ... 26 more

I swear I had this working before without problem. Am I missing something? I am 
using 7.0M3.

Thanks,

Xavier                                    

Reply via email to