Hi Alexander,

Thank you for the response both here and on stackoverflow. Sorry I haven’t 
noticed it. I’ll upgrade the versions as soon as possible and will come back to 
you. Although from Andy’s response and the decompiled code that I had I don’t 
think that the potential bug comes from the AspectJ side. 

Cheers ;)

> On Jun 20, 2015, at 2:08 PM, Alexander Kriegisch <alexan...@kriegisch.name> 
> wrote:
> 
> Hi Sina.
> 
> I have answered about a week ago on StackOverflow, maybe you have not noticed:
> http://stackoverflow.com/a/30828293/1082681
> 
> Regards
> -- 
> Alexander Kriegisch
> http://scrum-master.de
> 
> 
> Sina schrieb am 01.06.2015 20:13:
> 
> Hi Andy,
>> 
>> 
>> In fact my SampleImpl class is a stateless EJB which cannot be final and 
>> I’ve used AspectJ previously with EJBs without any problem as they were not 
>> marked as final classes. There is one point unclear for me: Even if the 
>> ordering of compilation varies from one environment to another one the 
>> result should be the same, meaning that nobody should mark the class as 
>> final or an extended type of that class as final class in implementation of 
>> the proxies. I looked at the decompiled code of my test class and it extends 
>> the SampleImpl class and marks it as final when the aspectj is also in play 
>> but when it is commented out in my pom.xml the class is not marked as final 
>> anymore.
>> 
>> Something goes wrong probably on Mockito’s side that it marks the extended 
>> class as final. 
>> 
>> 
>> I’ve also posted the same message in Mockito’s mailing list. I hope to get 
>> an answer from there. 
>> 
>> Thank you for the response and declaration. 
>> 
>> Cheers,
>> 
>> Sina
>> 
>> 
>> 
>>> 
>>> On Jun 1, 2015, at 4:33 PM, Andy Clement <andrew.clem...@gmail.com 
>>> <mailto:andrew.clem...@gmail.com> > wrote:
>>> 
>>> 
>>> 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 
>>>> <mailto: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 
>>>>> <https://dev.eclipse.org/mailman/listinfo/aspectj-users> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> 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 
>>>> <https://dev.eclipse.org/mailman/listinfo/aspectj-users> 
>>> 
>>> 
>>> _______________________________________________
>>> 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

Reply via email to