4

我正在尝试运行 Apache POI 项目的测试,但出现以下异常。我之前已经看过几次了,但每次我都完全不知道 JUnit 试图告诉我什么?

Javadoc 只是声明“当过滤器从运行器中删除所有测试时抛出。”,但这并不意味着 Ant 过滤器,因为它是在 JUnit 中抛出的,那么哪个过滤器可能在这里删除测试?如何调试/修复给我此消息的 Ant 文件?

test-main:
[junit] java.lang.NoClassDefFoundError: org/junit/runner/manipulation/NoTestsRemainException
[junit]     at java.lang.Class.getDeclaredMethods0(Native Method)
[junit]     at java.lang.Class.privateGetDeclaredMethods(Class.java:2451)
[junit]     at java.lang.Class.getMethod0(Class.java:2694)
[junit]     at java.lang.Class.getMethod(Class.java:1622)
[junit]     at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
[junit]     at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
[junit] Caused by: java.lang.ClassNotFoundException: org.junit.runner.manipulation.NoTestsRemainException
[junit]     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
[junit]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[junit]     at java.security.AccessController.doPrivileged(Native Method)
[junit]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
[junit]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
[junit]     ... 6 more
[junit] Exception in thread "main" 
[junit] java.io.FileNotFoundException: C:\workspaces\devtools\source\poi-trunk\junitvmwatcher937297744.properties (The system cannot find the file specified)
[junit]     at java.io.FileInputStream.open(Native Method)
[junit]     at java.io.FileInputStream.<init>(FileInputStream.java:138)
[junit]     at java.io.FileReader.<init>(FileReader.java:72)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeAsForked(JUnitTask.java:1115)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:896)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:819)
[junit]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[junit]     at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
[junit]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[junit]     at java.lang.reflect.Method.invoke(Method.java:601)
[junit]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[junit]     at org.apache.tools.ant.Task.perform(Task.java:348)
[junit]     at org.apache.tools.ant.Target.execute(Target.java:357)
[junit]     at org.apache.tools.ant.Target.performTasks(Target.java:385)
[junit]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
[junit]     at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
[junit]     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[junit]     at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
[junit]     at org.apache.tools.ant.Main.runBuild(Main.java:758)
[junit]     at org.apache.tools.ant.Main.startAnt(Main.java:217)
[junit]     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
[junit]     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
4

1 回答 1

5

在深入研究了这个问题之后,我发现这是由于运行较新的 Ant 和较旧的 JUnit 造成的。在这种情况下,它是 Ant 1.7.1 和 1.8.2 与 JUnit 3.8.1。升级到 JUnit 4.10 解决了这个问题!

于 2013-05-16T12:52:31.133 回答