当前位置:  开发笔记 > 编程语言 > 正文

配置ant以运行单元测试.图书馆应该在哪里?应该如何配置classpath?避免ZipException

如何解决《配置ant以运行单元测试.图书馆应该在哪里?应该如何配置classpath?避免ZipException》经验,为你挑选了2个好方法。

我正在尝试使用ant运行我的junit测试.测试是使用JUnit 4测试套件启动的.如果我直接从Eclipse运行它,测试完成没有错误.但是,如果我从ant运行它,那么许多测试都会失败,并且一遍又一遍地重复此错误,直到junit任务崩溃.

    [junit] java.util.zip.ZipException: error in opening zip file
    [junit]     at java.util.zip.ZipFile.open(Native Method)
    [junit]     at java.util.zip.ZipFile.(ZipFile.java:114)
    [junit]     at java.util.zip.ZipFile.(ZipFile.java:131)
    [junit]     at 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]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.checkForkedPath(JUnitTask.java:1128)
    [junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeAsForked(JUnitTask.java:1013)
    [junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:834)
    [junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:1785)
    [junit]     at 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(Unknown Source)
    [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]     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)

我的测试运行任务如下:

    
        
        
            
            
            
        
        
    

我已经验证了类路径包含以下内容以及所有程序代码和库:

ant-junit.jar
ant-launcher.jar
ant.jar
easymock.jar
easymockclassextension.jar
junit-4.4.jar

我已经尝试调试以找出它试图打开哪个ZipFile没有运气,我已经尝试切换includeantruntimefork我已经尝试使用ant -lib test/libs运行ant,其中test/libs包含ant和junit库.

感谢有关导致此异常的原因或您如何配置ant以成功运行单元测试的任何信息.

ant 1.7.1(ubuntu),java 1.6.0_10,junit 4.4

谢谢.

更新 - 修复 发现我的问题.我使用文件集在我的路径中包含了我的类目录,而不是导致.class文件作为ZipFiles打开的​​文件,这当然引发了异常.



1> chillitom..:

发现我的问题.我使用文件集在我的路径中包含了我的类目录,而不是导致.class文件作为ZipFiles打开的文件,这当然引发了异常.



2> 小智..:

此错误是由于类路径包含对一个或多个不是JAR的[文件]的显式引用而引起的.对"打开zip文件中的错误"的引用当然是JAR实际上是一个ZIP文件,其他文件[JUNIT]发现类文件不是,因此没有zip格式.所以类路径应该只包含对JAR [files]的显式引用和/或其他资源(如类文件)的[目录]的名称.

因此,在构建类路径时(在ANT中)使用:


           :one for each of the [directories] where class files, log4j property files and other resources etc are to be found
                       :to describe all the explicit JAR [files] that need to be on the class path.

哪里


    
    
    

要么

注意:使用通配符时[**/*],需要确保通配符不匹配非JAR文件的文件


    

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有