ApplicationComposer and Mockito

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

ApplicationComposer and Mockito

Xavier Dury
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 | Threaded
Open this post in threaded view
|

Re: ApplicationComposer and Mockito

Romain Manni-Bucau
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 <[hidden email]>:

> 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 | Threaded
Open this post in threaded view
|

RE: ApplicationComposer and Mockito

Xavier Dury
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: [hidden email]
> Date: Mon, 14 Mar 2016 15:35:41 +0100
> Subject: Re: ApplicationComposer and Mockito
> To: [hidden email]
>
> 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 <[hidden email]>:
>
>> 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 | Threaded
Open this post in threaded view
|

Re: ApplicationComposer and Mockito

Romain Manni-Bucau
do you use openejb-mockito? there is a MockitoExtension which does that.


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:56 GMT+01:00 Xavier Dury <[hidden email]>:

> 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: [hidden email]
> > Date: Mon, 14 Mar 2016 15:35:41 +0100
> > Subject: Re: ApplicationComposer and Mockito
> > To: [hidden email]
> >
> > 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 <[hidden email]>:
> >
> >> 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 | Threaded
Open this post in threaded view
|

RE: ApplicationComposer and Mockito

Xavier Dury
Indeed, I was missing the MockitoExtension.

Thanks a lot!

Xavier

----------------------------------------

> From: [hidden email]
> Date: Mon, 14 Mar 2016 15:58:17 +0100
> Subject: Re: ApplicationComposer and Mockito
> To: [hidden email]
>
> do you use openejb-mockito? there is a MockitoExtension which does that.
>
>
> 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:56 GMT+01:00 Xavier Dury <[hidden email]>:
>
>> 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: [hidden email]
>>> Date: Mon, 14 Mar 2016 15:35:41 +0100
>>> Subject: Re: ApplicationComposer and Mockito
>>> To: [hidden email]
>>>
>>> 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 <[hidden email]>:
>>>
>>>> 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
>>
>>