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

Reply via email to