问答

java – 配置蚂蚁运行单元测试 图书馆应该在哪里? classpath应该如何配置?避免ZipException

 来源    2018-06-13    1  

我试图用蚂蚁运行我的junit测试。测试使用JUnit 4测试套件启动。如果我直接从Eclipse运行,测试完成没有错误。但是,如果我从蚂蚁运行它,那么许多测试失败,这个错误反复反复,直到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)

我的测试运行任务如下:

    <target name="run-junit-tests" depends="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="Unit tests failed"/>
    </target>

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

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

我已经尝试调试,找出哪些ZipFile它试图打开没有运气,我已经尝试切换了includeantruntime和fork,我已经尝试运行ant与ant -lib测试/ libs其中test / libs包含ant和junit库。

有关什么导致此异常的信息或您如何配置蚂蚁以成功运行单元测试的任何信息均得到感谢。

蚂蚁1.7.1(ubuntu),java 1.6.0_10,junit 4.4

谢谢。

更新 – 修正
找到我的问题我已经将我的课程目录放在我的路径中,使用文件集,而不是pathelement,这导致.class文件被打开为ZipFiles,这当然引发了一个异常。

找到我的问题我已经将我的课程目录放在我的路径中,使用文件集,而不是pathelement,这导致.class文件被打开为ZipFiles,这当然引发了一个异常。

相关文章
嘿嘿,JAVA里第一次运行单元测试成功,立存
日志按书上写的单元测试. 居然一次过,爽!!! package org.smart4j.chapter2.test; import java.util.HashMap; import java.util. ...
1
如何为Java 8编译和运行我的Maven单元测试,同时为Java 7编译代码
问答我想在我的单元测试中使用Java 8语法. 但是我的'main'代码必须为Java 7编译,因为我的生产环境只安装了JDK 7. 有没有办法这样做与maven编译器插件? 我的Jenkins服务器安装 ...
2
ios – 在早期的单元测试配置下,不能在Xcode 8中运行单元测试
问答升级到Xcode 8后遇到这个问题.运行测试时,我在运行时得到这个错误: /Users/\u0026lt;me\u0026gt;/work/\u0026lt;appname\u0026gt;/Buil ...
2
使用基于Java的配置进行Spring 3.2单元测试
问答我使用Spring 3.2和基于Java的配置,并且我的单元测试(JUnit 4.8.1)存在一些问题.所以这是一个测试运行者: @RunWith(SpringJUnit4ClassRunner.cl ...
1
java – 选择要运行的配置类型时,在IntelliJ IDEA 15中运行Gradle测试,而不是Junit测试
问答我从14更新为Intellij 15.02,想要使用Gradle而不是JUnit运行我的测试,但是我没有得到这些选项,就像您在这里看到的图像. 我想要能够选择配置类型. 当我运行测试时,现在发生的事情 ...
1
java – 如何在运行时配置JPA表名?
问答我有一个问题,我只有一个数据库可供使用,但我有多个服务器,我希望他们为每个服务器使用不同的表名. 现在我的班级被配置为: @Entity @Table(name="loader_queue& ...
1
java – 在需要身份验证的控制器上运行单元测试
问答我有一个spring boot应用程序,需要登录才能执行某些操作.我试图使用MockMvc测试它们,但它似乎不起作用.我一直收到状态为403的HTTP响应(禁止).可能是身份验证部分出了问题. 我试过 ...
1
如何在maven中运行单元测试,它是在src/test-integration/java文件夹中
问答当我们说mvn测试时,通常的方式是,maven将寻找在src / test / java文件夹中出现的测试.但是我在一些不同的文件夹中进行测试,即src / integration-test / ja ...
1
java – 当某些模块没有编译时,如何在IntelliJ中运行单元测试?
问答我已经获得了一个快速修复bug的遗留项目.这是一个基于蚂蚁的项目,所以我使用eclipse文件将其导入intellij.项目有几个模块,其中一些模块没有正确编译. 我想做的是: 我有我需要编译的模块, ...
3
java – Maven Cobertura和包没有运行单元测试两次
问答我正在运行这样的maven: mvn clean cobertura:cobertura package 我注意到我的单元测试运行了两次(从而使我的构建时间加倍).有没有办法在不运行测试两次的情况下运 ...
1
如何正确设置Java/Selenium配置以运行自动化测试?
问答我正在尝试设置selenium webdriver与Browserstack一起使用Java进行自动化测试.我安装了Selenium for java,我从browserstack的站点https:/ ...
4
java – 在服务器上运行单元测试(JAX-RS)
问答我正在写一个JAX-RS(Jersey Maven)应用程序,它会执行一些棘手的事情(例如调用嵌入在WAR中的本机可执行文件).我需要在服务器(Amazon Elastic Beanstalk运行To ...
1
java – 从intelliJ当前打开的文件运行单元测试
问答有没有办法让IntelliJ运行当前的MyTest.java文件? 谢谢::是的,你也可以 右键单击文件并运行 >使用键绑定:如果插入符在该方法的方法将被运行 在mac上它是控制fn shift ...
1
junit – 在Android Studio中对Java子项目运行单元测试
问答我无法在Android Studio中的Gradle子项目上运行任何JUnit测试.这个项目不以任何方式依赖Android,它只使用Java Gradle插件. Android Gradle项目具有以 ...
2
java – 如何在运行时访问配置的Log4J追加器?
问答我想在启动时配置一个appender,然后根据需要动态添加和删除它从各种记录器.我希望有log4j配置这个appender本身,只需要在需要的时候引用它.如果这是不可能的,我必须自己实例化append ...
1
java – 如何仅针对已更改的源文件运行单元测试?
问答有没有办法让我只为它构建的java类运行单元测试?例如,如果MyClass.java已过期,则ant将构建MyClass.class.之后,我希望它也运行MyClassTest和MyClassTest ...
1
java – 运行单元测试右键单击上下文项目不可见IntelliJ 12
问答我下载了最新的Intellij 12版本,现在我看不到右键单击上下文菜单项来运行我的单元测试当前文件. 该选项现在在哪里?::为我工作的解决方案如下: 右键单击测试文件夹-->标记目录AS -- ...
1
java – 使用Gradle更改源文件时运行单元测试的子集
问答我使用gradle 3.5构建系统,并在Java项目中进行了多次单元和集成测试.当我在源文件(sourceSets)中进行更改时,gradle的编译避免和增量编译确保只编译相关的源文件,这是一个巨大的 ...
2
java – 只运行单元测试哪些源代码已经改变了?
问答我在Jenkins CI服务器上运行单元测试和Selenium测试.众所周知,测试需要很长时间才能在大型项目中运行. 有没有Java的工具/框架,它只能触发各自的源代码发生变化的测试?这是因为不是每次 ...
1