Hi Romain, I think that the @CdiExtensions is causing the problem: if I remove it, the test passes without the need of the @Produces annotation.
Xavier ---------------------------------------- > From: [email protected] > Date: Mon, 14 Mar 2016 15:35:41 +0100 > Subject: Re: ApplicationComposer and Mockito > To: [email protected] > > 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
