[ 
http://jira.codehaus.org/browse/SUREFIRE-298?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_89035
 ] 

Flemming Boller commented on SUREFIRE-298:
------------------------------------------

Moving the junit test with jmockit out into build.xml(ant) and make maven2 
antrun plugin start it seems to work until the surefire plugin gets updated.


=============
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>test-compile</phase>
                        <configuration>
                            <tasks>
                                <taskdef name="junit"
                                         
classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">
                                    <classpath>
                                        <path refid="maven.test.classpath"/>
                                    </classpath>
                                </taskdef>
                                <echo message="tester boller"/>
                                <ant antfile="build.xml" dir="${basedir}" 
inheritRefs="true">
                                    <target name="test"/>
                                </ant>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
=================

> Problem using -javaagent
> ------------------------
>
>                 Key: SUREFIRE-298
>                 URL: http://jira.codehaus.org/browse/SUREFIRE-298
>             Project: Maven Surefire
>          Issue Type: Bug
>          Components: classloading
>    Affects Versions: 2.0 (2.2 plugin)
>         Environment: Windows XP
>            Reporter: Bård Dybwad Kristensen
>
> I try to run the JMockit framework in my tests to do some mocking of static 
> classes.
> I supply the argLine arguments as follows (some spaces added to avoid 
> smileys):
>                               <configuration>
>                                       <argLine>-javaagent:D : \ 
> .m2\repository\jmockit\jmockit\0.83\jmockit-0.83.jar</argLine>
>                               <forkMode>once</forkMode>
>                               </configuration>
> This does not work. The problem is that the Mockit class is not able to find 
> neither the class it is suppose to mock nor the class to use as a mock. I 
> have made two small classes, Math and MockMath each with one similar method 
> and one static String constant. My setup-method in the testclass is as 
> follows:
>     protected void setUp() throws Exception {
>       super.setUp();
>       System.out.println(Math.TEST);
>       System.out.println(MockMath.TEST);
>       Mockit.redefineMethods(Math.class, MockMath.class);
>     }
> When I run this, the two System.out.printlns runs Ok, and prints what it 
> should, but the Mockit class returns the following error:
> java.lang.RuntimeException: Failed to read class file for 
> no.ergo.ec.vaktplan.MockMath
>       at mockit.Mockit.readClassFile(Mockit.java:228)
>       at mockit.Mockit.collectMockMethods(Mockit.java:191)
>       at mockit.Mockit.redefineMethods(Mockit.java:176)
>       at mockit.Mockit.redefineMethods(Mockit.java:162)
>       at no.ergo.ec.vaktplan.TestMain.setUp(TestMain.java:12)
>       at junit.framework.TestCase.runBare(TestCase.java:125)
>       at junit.framework.TestResult$1.protect(TestResult.java:106)
>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>       at junit.framework.TestResult.run(TestResult.java:109)
>       at junit.framework.TestCase.run(TestCase.java:118)
>       at junit.framework.TestSuite.runTest(TestSuite.java:208)
>       at junit.framework.TestSuite.run(TestSuite.java:203)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:585)
>       at 
> org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:210)
>       at 
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:135)
>       at 
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:122)
>       at org.apache.maven.surefire.Surefire.run(Surefire.java:129)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:585)
>       at 
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:225)
>       at 
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:747)
> Caused by: java.io.IOException: Class not found
>       at org.objectweb.asm2.ClassReader.readClass(ClassReader.java:259)
>       at org.objectweb.asm2.ClassReader.<init>(ClassReader.java:236)
>       at org.objectweb.asm2.ClassReader.<init>(ClassReader.java:246)
>       at mockit.Mockit.readClassFile(Mockit.java:225)
> It is not able to find the class, which was ok in the System.out run just 
> before.
> If I do a mvn eclipse:eclipse and create an eclipse project, I can run the 
> test class without any problems in Eclipse (with exactly tha same VM 
> arguments as I use in the pom.xml)
> So I guess it is some issue with which classloader that loads the Mockit 
> class when it is supplied as the instrumentation class via the -javaagent 
> switch.
> Anybody experience any problems like this using the -javaagent switch?
> Any feedback would be greatly appreciated. 
> regards,
> bdk

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to