我正在尝试使用ant运行我的junit测试。使用JUnit 4测试套件开始测试。如果我直接从Eclipse运行此程序,则测试将正确完成。但是,如果我从ant运行它,则许多测试都会失败,并不断重复此错误,直到junit任务崩溃为止。
[junit] java.util.zip.ZipException:打开zip文件时出错 java.util.zip.ZipFile.open中的[junit](本机方法) [junit] at java.util.zip.ZipFile。(ZipFile.java:114) [junit] at java.util.zip.ZipFile。(ZipFile.java:131) [junit]位于org.apache.tools.ant.AntClassLoader.getResourceURL(AntClassLoader.java:1028) [junit] at org.apache.tools.ant.AntClassLoader $ ResourceEnumeration.findNextResource(AntClassLoader.java:147) [junit] at org.apache.tools.ant.AntClassLoader $ ResourceEnumeration.nextElement(AntClassLoader.java:130) [junit] at org.apache.tools.ant.util.CollectionUtils $ CompoundEnumeration.nextElement(CollectionUtils.java:198) [junit] at sun.misc.CompoundEnumeration.nextElement(CompoundEnumeration.java:43) [junit],位于org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.checkForkedPath(JUnitTask.java:1128) [junit],位于org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeAsForked(JUnitTask.java:1013) [junit],位于org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:834) [junit],位于org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:1785) [junit],位于org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:785) [junit] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) [junit] at sun.reflect.GeneratedMethodAccessor1.invoke(未知源) [junit] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [junit] at java.lang.reflect.Method.invoke(Method.java:597) [junit] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) [junit]位于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]位于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]位于org.apache.tools.ant.Main.runBuild(Main.java:758) [junit]位于org.apache.tools.ant.Main.startAnt(Main.java:217) [junit]位于org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) [junit]位于org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
我的测试运行任务如下:
<target name =“ run-junit-tests”取决于=“ compile-tests,clean-results”> <mkdir dir =“ $ {test.results.dir}” /> <junit failureproperty =“ tests.failed” fork =“ true” showoutput =“ yes” includeantruntime =“ false”> <classpath refid =“ test.run.path” /> <formatter type =“ xml” /> <test name =“ project.AllTests” todir =“ $ {basedir} / test-results” /> </ junit> <fail if =“ tests.failed” message =“单元测试失败” /> </ target>
我已经验证了类路径包含以下内容以及所有程序代码和库:
ant-junit.jar ant-launcher.jar ant.jar easymock.jar easymockclassextension.jar junit-4.4.jar
我尝试调试以找出要打开的ZipFile,但没有运气,我尝试切换 includeantruntime 和 fork, 并且尝试使用 ant -lib test / libs 运行ant,其中test / libs包含ant和junit库。
非常感谢您收到有关导致此异常的原因或您如何将ant配置为成功运行单元测试的任何信息。
ant 1.7.1(ubuntu),java 1.6.0_10,junit 4.4
谢谢。
更新-修复 发现我的问题。我使用文件集将我的classes目录包含在路径中,而不是路径元素,这导致.class文件作为ZipFiles打开,这当然引发了异常。
发现我的问题。我使用 文件集 将我的classes目录包含在路径中,而不是路径 元素, 这导致.class文件作为 ZipFiles 打开,这当然引发了异常。