My initial thought is that it is an ordering thing. AspectJ uses a pipeline system where types at different stages through the pipeline are represented in different ways (if they haven’t made it into the weaver yet they have an eclipse representation, once through the weaver they have a bcel representation). The ordering of compilation is not enforced other than aspects go first down the pipeline. This means compiling in different environments (on different JDK levels, doing a build inside eclipse, outside eclipse, etc) can lead to all the other types flowing down the pipeline in the different orders.
This sounds bad: >> >> Caused by: java.lang.VerifyError: Cannot inherit from final class But if AspectJ were making that mistake I’d perhaps expect to see the issue without mockito in the mix. cheers, Andy > On May 31, 2015, at 8:42 AM, Sina <sina.golesor...@gmail.com> wrote: > > 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 >> <mailto: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 <mailto: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
_______________________________________________ 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