Mockito is not wired for CDI OOTB since it is easy to control it: you would need a @produces on the field.
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber <http://www.tomitribe.com> 2016-03-14 15:25 GMT+01:00 Xavier Dury <[email protected]>: > 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
