java - 运行 junit 测试时出现 ZipException

标签 java exception ant junit classpath

我一直在尝试让 ant 执行一些用 junit 编写的测试,但没有成功。任何建议将不胜感激。我对 ant 和 Java 都很陌生,所以请耐心等待。

作为快速总结,我正在做的是尝试让 ant 执行一个非常简单的测试,考虑到 ant -debug 的输出,类路径看起来没问题。对于在类路径中明确提到类文件的测试,我得到一个空测试错误。另外,我收到 ZipException,我不知道那是什么。

这是我要运行的测试用例:

package testmanagment;
import junit.framework.*;

public abstract class EasyTest extends TestCase
{

    public EasyTest(String name)
    {
        super(name);
    }

    protected void setUp()
    {}

    protected void testSeeMee() throws Exception
    {
        assertTrue(true);
    }

    protected void testSeeMeetoo() throws Exception
    {
        assertTrue(true);
    }   
}

包中有一些测试,这个测试只是为了看看为什么一切都失败了。它因 ZipException 而失败。

这是我的 make 文件的一部分:

  <property name="src" value="src/"/> 
     <property name="build" value="build/"/>  
     <property name="test" value="${build}test/"/>
     <property name="testreportsdir" value="${test}reports/"/>
     <property name="classdir" value="${build}classes/"/>
     <property name="lib" value="lib/"/> 

    <path id="files-classpath">  
        <fileset dir="lib/" >  
            <include name="*.jar"/>  
        </fileset>  
    </path> 

    <path id="tests-classpath">
        <path refid="files-classpath"/>
        <pathelement location="${classdir}/"/>
    </path>

    <path id="tests-runpath">
        <path refid="tests-classpath"/>
        <fileset dir="${test}/">
            <include name="*.class"/>
            <include name="**/*.class"/>
            <include name="testmanagment/*.class"/>
            <include name="*.*"/>
            <include name="**/*.*"/>
            <include name="testmanagment/*.*"/>
        </fileset>
        </path>

blah blah blah

    <target name="test" depends="compile_tests">
        <junit haltonfailure="true"  printsummary="false">
            <classpath refid="tests-runpath"/>
            <formatter type="brief" usefile="false"/>
            <test name="testmanagment.EasyTest"/>
            <test name="testmanagment.TestUser"/>
            <test name="testmanagment.TestTest"/>
                </junit>
    </target>

ant 可以很好地编译所有内容,并将所有内容放在正确的位置。但它似乎无法找到我的测试...这是当我使用 -debug 选项运行它时 Ant 吐出的一小部分。

 [junit] Using CLASSPATH /host/Users/Sheena/Desktop/School/Software dev/lab_project/lib/junit-4.8.1.jar:/host/Users/Sheena/Desktop/School/Software dev/lab_project/lib/sqlitejdbc-v056.jar:/host/Users/Sheena/Desktop/School/Software dev/lab_project/build/classes:/host/Users/Sheena/Desktop/School/Software dev/lab_project/build/test/testmanagment/EasyTest.class:/host/Users/Sheena/Desktop/School/Software dev/lab_project/build/test/testmanagment/TestTest.class:/host/Users/Sheena/Desktop/School/Software dev/lab_project/build/test/testmanagment/TestUser.class:/usr/share/ant/lib/junit.jar:/usr/share/java/ant-launcher-1.7.1.jar:/usr/share/ant/lib/ant.jar:/usr/share/ant/lib/ant-junit.jar
Class org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter loaded from parent loader (parentFirst)
Finding class testmanagment.EasyTest
Ignoring Exception java.util.zip.ZipException: error in opening zip file reading resource testmanagment/EasyTest.class from /host/Users/Sheena/Desktop/School/Software dev/lab_project/build/test/testmanagment/EasyTest.class
Ignoring Exception java.util.zip.ZipException: error in opening zip file reading resource testmanagment/EasyTest.class from /host/Users/Sheena/Desktop/School/Software dev/lab_project/build/test/testmanagment/TestTest.class
Ignoring Exception java.util.zip.ZipException: error in opening zip file reading resource testmanagment/EasyTest.class from /host/Users/Sheena/Desktop/School/Software dev/lab_project/build/test/testmanagment/TestUser.class
    [junit] Testsuite: testmanagment.EasyTest
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
    [junit] 
    [junit] Null Test:  Caused an ERROR

对于那里丑陋的输出感到抱歉,这就是我现在必须处理的一切。

它看起来非常像类路径中的测试用例,所以我不知道发生了什么......也许这与 ZipException 有关但我不知道......

最佳答案

您将 EasyTest.class 作为 JAR 文件添加到类路径中。这是行不通的。类文件不是 JAR 存档,因此类加载器在尝试从中加载类时会抛出错误。

关于java - 运行 junit 测试时出现 ZipException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6015092/

相关文章:

java - 为代码段的特定方法禁用 Java JIT

c# - 判断可能出现的字符串赋值运算符异常

ant - 如何在 Hudson 中为 Ant 配置 checkstyle 配置?

java - build.xml 和 build-impl.xml 的区别

java - 有条件地忽略 JUnit 4 中的测试

java - 多对多关联中按 <集合元素的属性> 排序

java - 日志管理器和垃圾收集器

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

xml - Solr 3.5 : Mutliple values encountered for non multivalued field

ant - 转储 Ant 脚本中所有定义的属性