ZipException при запуске тестов Junit - PullRequest
8 голосов
/ 16 мая 2011

Я тщетно пытался заставить муравья выполнить некоторые тесты, написанные на junit.Любые советы будут высоко ценится.Я довольно плохо знаком с ant и Java, поэтому, пожалуйста, наберитесь терпения.

Вкратце, я пытаюсь заставить ant выполнить очень простой тест, classpath выглядит нормально, учитывая выводот муравья-дебага.Я получаю нулевую ошибку теста для теста, файл класса которого явно указан в пути к классам.Кроме того, я получаю 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.

 [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

извините за уродливый вывод, это все, с чем я должен сейчас работать.

похоже, что тестовые сценарии находятся в classpath, поэтому я не знаю, что происходит... Может быть, это как-то связано с ZipException, но я не знаю ...

Ответы [ 2 ]

7 голосов
/ 16 мая 2011

Вы добавили EasyTest.class как JAR-файл в путь к классам. Это не работает Файлы классов не являются архивами JAR, поэтому загрузчик классов выдает ошибку, когда пытается загрузить классы из него.

1 голос
/ 16 мая 2011

Я предполагаю, что вы используете jUnit 3. Вы можете попробовать создать класс TestCase, который не является абстрактным классом. Кроме того, имейте конструктор по умолчанию, иначе jUnit не будет знать, как создать тестовый класс.

В вашем случае это должно быть:

package testmanagment; 

import junit.framework.*;

public class EasyTest extends TestCase {

    public EasyTest() {
        super("Easy Test");
    }

    public void setUp() {
    }

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

    public void testSeeMeetoo() throws Exception {
        assertTrue(true);
    }   
}
...