NullPointerException使用JMockit测试模拟的java.io.File两次

NullPointerException使用JMockit测试模拟的java.io.File两次,java,bdd,jmockit,Java,Bdd,Jmockit,当我尝试将模拟文件与以下内容一起使用时,我遇到了NullPointerException: 我的输出是: [java] 1) testMockedFileCanBeUsed2(com.metamolecular.poobah.test.MockedFileTest)java.lang.NullPointerException [java] at java.io.FilePermission.init(FilePermission.java:193) [java] at ja

当我尝试将模拟文件与以下内容一起使用时,我遇到了NullPointerException:

我的输出是:

 [java] 1) testMockedFileCanBeUsed2(com.metamolecular.poobah.test.MockedFileTest)java.lang.NullPointerException
 [java]     at java.io.FilePermission.init(FilePermission.java:193)
 [java]     at java.io.FilePermission.<init>(FilePermission.java:249)
 [java]     at sun.net.www.protocol.file.FileURLConnection.getPermission(FileURLConnection.java:198)
 [java]     at sun.net.www.protocol.jar.JarFileFactory.getPermission(JarFileFactory.java:124)
 [java]     at sun.net.www.protocol.jar.JarFileFactory.getCachedJarFile(JarFileFactory.java:94)
 [java]     at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:50)
 [java]     at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104)
 [java]     at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:132)
 [java]     at java.net.URL.openStream(URL.java:1010)
 [java]     at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1232)
 [java]     at mockit.internal.ClassFile.readClass(ClassFile.java:55)
 [java]     at mockit.internal.ClassFile.createClassFileReader(ClassFile.java:44)
 [java]     at mockit.internal.ClassFile.<init>(ClassFile.java:72)
 [java]     at mockit.internal.RedefinitionEngine.restoreOriginalDefinition(RedefinitionEngine.java:316)
 [java]     at mockit.internal.state.MockFixture.restoreAndRemoveRedefinedClasses(MockFixture.java:174)
 [java]     at mockit.internal.state.SavePoint.restoreClassesRedefinedAfterSavepoint(SavePoint.java:77)
 [java]     at mockit.internal.state.SavePoint.rollback(SavePoint.java:57)
 [java]     at mockit.internal.state.SavePoint.rollbackForTestClass(SavePoint.java:89)
 [java]     at mockit.integration.TestRunnerDecorator.updateTestClassState(TestRunnerDecorator.java:54)
 [java]     at mockit.integration.junit3.internal.JUnitTestCaseDecorator.runBare(JUnitTestCaseDecorator.java:81)
 [java]     at com.metamolecular.poobah.test.Main.main(Main.java:45)
 [java] 
 [java] FAILURES!!!
 [java] Tests run: 2,  Failures: 0,  Errors: 1
 [java] 
[java]1)testMockedFileCanBeUsed2(com.metamolecular.poobah.test.MockedFileTest)java.lang.NullPointerException
[java]位于java.io.FilePermission.init(FilePermission.java:193)
[java]位于java.io.FilePermission.(FilePermission.java:249)
[java]位于sun.net.www.protocol.file.FileURLConnection.getPermission(FileURLConnection.java:198)
[java]位于sun.net.www.protocol.jar.JarFileFactory.getPermission(JarFileFactory.java:124)
[java]位于sun.net.www.protocol.jar.JarFileFactory.getCachedJarFile(JarFileFactory.java:94)
[java]位于sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:50)
[java]位于sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104)
[java]位于sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:132)
[java]位于java.net.URL.openStream(URL.java:1010)
[java]位于java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1232)
[java]位于mockit.internal.ClassFile.readClass(ClassFile.java:55)
[java]位于mockit.internal.ClassFile.createClassFileReader(ClassFile.java:44)
[java]位于mockit.internal.ClassFile.(ClassFile.java:72)
[java]位于mockit.internal.RedefinitionEngine.restoreOriginalDefinition(RedefinitionEngine.java:316)
[java]位于mockit.internal.state.MockFixture.RestoreAndRemoveRedefinedClass(MockFixture.java:174)
[java]位于mockit.internal.state.SavePoint.restoreclasseDefinedAftersavepoint(SavePoint.java:77)
[java]位于mockit.internal.state.SavePoint.rollback(SavePoint.java:57)
[java]位于mockit.internal.state.SavePoint.rollbackortestclass(SavePoint.java:89)
[java]位于mockit.integration.TestRunnerDecorator.updateTestClassState(TestRunnerDecorator.java:54)
[java]位于mockit.integration.junit3.internal.junitestcasedecorator.runBare(junitestcasedecorator.java:81)
[java]位于com.metamolecular.poobah.test.Main.Main(Main.java:45)
[爪哇]
[java]失败!!!
[java]测试运行:2,失败:0,错误:1
[爪哇]
该错误仅在调用testMockedFileCanBeUsed2时发生。如果只运行一个测试,则不会引发错误。我在测试套件中看到这种行为——换句话说,如果我在测试套件中使用模拟文件一次,其他使用模拟文件的测试套件也会抛出

我对JMockit不太熟悉,可能我只是在做一些愚蠢的事情——但我还没有在我使用过的其他模拟对象中看到过这一点


有什么想法吗?

由于Sun在类加载机制中引入了优化,JDK1.6.0_18出现了这个问题。它是在不久前在JMockit修复的

请尝试0.997版的当前预览版本,该版本可以:

 [java] 1) testMockedFileCanBeUsed2(com.metamolecular.poobah.test.MockedFileTest)java.lang.NullPointerException
 [java]     at java.io.FilePermission.init(FilePermission.java:193)
 [java]     at java.io.FilePermission.<init>(FilePermission.java:249)
 [java]     at sun.net.www.protocol.file.FileURLConnection.getPermission(FileURLConnection.java:198)
 [java]     at sun.net.www.protocol.jar.JarFileFactory.getPermission(JarFileFactory.java:124)
 [java]     at sun.net.www.protocol.jar.JarFileFactory.getCachedJarFile(JarFileFactory.java:94)
 [java]     at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:50)
 [java]     at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104)
 [java]     at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:132)
 [java]     at java.net.URL.openStream(URL.java:1010)
 [java]     at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1232)
 [java]     at mockit.internal.ClassFile.readClass(ClassFile.java:55)
 [java]     at mockit.internal.ClassFile.createClassFileReader(ClassFile.java:44)
 [java]     at mockit.internal.ClassFile.<init>(ClassFile.java:72)
 [java]     at mockit.internal.RedefinitionEngine.restoreOriginalDefinition(RedefinitionEngine.java:316)
 [java]     at mockit.internal.state.MockFixture.restoreAndRemoveRedefinedClasses(MockFixture.java:174)
 [java]     at mockit.internal.state.SavePoint.restoreClassesRedefinedAfterSavepoint(SavePoint.java:77)
 [java]     at mockit.internal.state.SavePoint.rollback(SavePoint.java:57)
 [java]     at mockit.internal.state.SavePoint.rollbackForTestClass(SavePoint.java:89)
 [java]     at mockit.integration.TestRunnerDecorator.updateTestClassState(TestRunnerDecorator.java:54)
 [java]     at mockit.integration.junit3.internal.JUnitTestCaseDecorator.runBare(JUnitTestCaseDecorator.java:81)
 [java]     at com.metamolecular.poobah.test.Main.main(Main.java:45)
 [java] 
 [java] FAILURES!!!
 [java] Tests run: 2,  Failures: 0,  Errors: 1
 [java]