I haven't found a solution yet but I know why is this happening. The problem actually lies here on overriding the someMethod(). Removing the method override or commenting out the aspectj maven plugin solves the problem as a workaround. I cannot let AspectJ out of my project so I have to mock the someMethod() as well without overriding it (e.g. using Mockito itself). It looks like a bug for me but I’m not quite sure does it come from AspectJ or Mockito.
> On May 30, 2015, at 10:45 PM, Sina <sina.golesor...@gmail.com> wrote: > > Hi there I have using the AspectJ along with Mockito’s spy I have the > following problem that I have posted on stackoverflow: > > http://stackoverflow.com/questions/30551184/mockitos-spy-does-not-work-along-with-aspectj-using-maven > > <http://stackoverflow.com/questions/30551184/mockitos-spy-does-not-work-along-with-aspectj-using-maven> > > > I have the following test class and I'm using Mockito's spy. By running my > unit test using Eclipse (right click->Run as unit test) all tests pass which > means that eclipse build process using m2e and AJDT works fine. > > @RunWith(MockitoJUnitRunner.class) > public class SamplelTest { > > > @Spy > @InjectMocks > private SamplelImpl sampleService = new SamplelImpl() { > > @Override > public void someMethod() { > ... > } > }; > > > @Test > public void someTest() throws Exception { > sampleService.methodUnderTest(); > } > However when I use maven to run the tests I get the following exception. > > Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.183 sec > <<< FAILURE! > org.sample.SamplelTest Time elapsed: 0.182 sec <<< ERROR! > org.mockito.exceptions.base.MockitoException: Problems initiating spied > field sampleService > at > org.mockito.internal.runners.JUnit45AndHigherRunnerImpl$1.withBefores(JUnit45AndHigherRunnerImpl.java:27) > at > org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:254) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) > at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) > at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) > at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) > at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) > at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) > at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) > at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) > at org.junit.runners.ParentRunner.run(ParentRunner.java:309) > at > org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37) > at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62) > at > org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) > at > org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) > at > org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at > org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) > at > org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) > at > org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) > at > org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) > at > org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) > Caused by: org.mockito.exceptions.base.MockitoException: > Mockito cannot mock this class: class org.sample.SamplelTest$1 > Mockito can only mock visible & non-final classes. > If you're not sure why you're getting this error, please report to the > mailing list. > ... 25 more > Caused by: org.mockito.cglib.core.CodeGenerationException: > java.lang.reflect.InvocationTargetException-->null > at > org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:238) > at org.mockito.cglib.proxy.Enhancer.createHelper(Enhancer.java:378) > at org.mockito.cglib.proxy.Enhancer.createClass(Enhancer.java:318) > at > org.mockito.internal.creation.cglib.ClassImposterizer.createProxyClass(ClassImposterizer.java:123) > at > org.mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:57) > at > org.mockito.internal.creation.cglib.ClassImposterizer.imposterise(ClassImposterizer.java:49) > at > org.mockito.internal.creation.cglib.CglibMockMaker.createMock(CglibMockMaker.java:24) > at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:33) > at org.mockito.internal.MockitoCore.mock(MockitoCore.java:59) > at org.mockito.Mockito.mock(Mockito.java:1285) > at > org.mockito.internal.configuration.injection.SpyOnInjectedFieldsHandler.processInjection(SpyOnInjectedFieldsHandler.java:43) > at > org.mockito.internal.configuration.injection.MockInjectionStrategy.process(MockInjectionStrategy.java:68) > at > org.mockito.internal.configuration.injection.MockInjectionStrategy.relayProcessToNextStrategy(MockInjectionStrategy.java:89) > at > org.mockito.internal.configuration.injection.MockInjectionStrategy.process(MockInjectionStrategy.java:71) > at > org.mockito.internal.configuration.injection.MockInjection$OngoingMockInjection.apply(MockInjection.java:93) > at > org.mockito.internal.configuration.DefaultInjectionEngine.injectMocksOnFields(DefaultInjectionEngine.java:20) > at > org.mockito.internal.configuration.InjectingAnnotationEngine.injectMocks(InjectingAnnotationEngine.java:100) > at > org.mockito.internal.configuration.InjectingAnnotationEngine.processInjectMocks(InjectingAnnotationEngine.java:62) > at > org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:56) > at org.mockito.MockitoAnnotations.initMocks(MockitoAnnotations.java:108) > ... 25 more > Caused by: java.lang.reflect.InvocationTargetException > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at org.mockito.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:385) > at > org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:220) > ... 44 more > Caused by: java.lang.VerifyError: Cannot inherit from final class > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:800) > ... 50 more > What is here the difference between the AJC compiler used in Eclipse with > AJDT and my AspectJ maven plugin configuration? Which configuration or phase > am I missing here? > > Here is my pom.xml: > > <dependency> > <groupId>org.aspectj</groupId> > <artifactId>aspectjrt</artifactId> > <version>1.6.11</version> > </dependency> > <build> > <plugins> > <plugin> > <groupId>org.codehaus.mojo</groupId> > <artifactId>aspectj-maven-plugin</artifactId> > <version>1.4</version> > <configuration> > <source>1.6</source> > <target>1.6</target> > </configuration> > <executions> > <execution> > <phase>process-sources</phase> > <goals> > <goal>compile</goal> > <goal>test-compile</goal> > </goals> > </execution> > </executions> > </plugin> > </plugins> > </build> > > Any idea? > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > To change your delivery options, retrieve your password, or unsubscribe from > this list, visit > https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/aspectj-users