2 Stimmen

JUnit-Test schlägt in Ant mit der Aufgabe "<junit>" fehl, besteht aber mit "<exec>"?

Ich automatisiere meine JUnit-Tests in meinem Ant-Build. Allerdings besteht mein einfacher Test nur, wenn er von der IDE und der Kommandozeile aus ausgeführt wird, schlägt aber mit Ant's <junit> Aufgabe. Wenn ich sie über die Befehlszeile ausführe (ich verwende technisch gesehen das Ant <exec> Aufgabe) ist das Ergebnis:

clean:

compile_tests:
    [javac] Compiling 2 source files to C:\MY_TEMP

junit_exec:
     [exec] JUnit version 4.10
     [exec] .
     [exec] Time: 0.004
     [exec]
     [exec] OK (1 test)
     [exec]

BUILD SUCCESSFUL
Total time: 1 second

aber wenn ich die <junit> Aufgabe:

Buildfile: C:\MY_TEMP\build.xml

clean:

compile_tests:
    [javac] Compiling 2 source files to C:\MY_TEMP

junit_ant:
     [echo] junit_ant started
    [junit] Test SimpleTest FAILED

BUILD SUCCESSFUL
Total time: 0 seconds

Der Inhalt von MY_TEMP sind junit-4.10.jar , SimpleTest.java y build.xml .

Ich habe kopiert junit-4.10.jar zum %ANT_HOME%\lib Ordner, wie von der Dokumentation der Ant-Junit-Aufgaben . Es hatte bereits beide ant-junit.jar y ant-junit4.jar .

Meine Version von Java ist 1.6.0_26.

Mein Test ist:

// YES, this is the default package
import org.junit.*;

public class SimpleTest {

    @Test
    public void mySimpleTest(){
        Assert.assertEquals(  2,  1 + 1  );
    }

}

Und meine Ant-Datei (build.xml) lautet:

<?xml version="1.0"?>
<project name="regression_tests" basedir=".">

    <target name="clean">
        <delete>
            <fileset dir="." includes="*.class" />
        </delete>
    </target>

    <target name="compile_tests" depends="clean">
            <javac srcdir="." destdir="." source="1.6" target="1.6" includeantruntime="false" >
            <classpath>
                <pathelement location="./junit-4.10.jar" />
            </classpath>
        </javac>
    </target>

    <target name="junit_ant" depends="compile_tests" >
        <echo message="junit_ant started" />

        <junit>
            <test name="SimpleTest" />
        </junit>
    </target>

    <target name="junit_exec" depends="compile_tests">
        <exec executable="java" dir="." >
            <arg value="-classpath" />
            <arg value=".;junit-4.10.jar" />
            <arg value="org.junit.runner.JUnitCore" />
            <arg value="SimpleTest" />
        </exec>
    </target>

</project>

4voto

Dave Newton Punkte 156303

Wenn ein Test auf eine Art und Weise besteht und auf eine andere nicht, liegt es wahrscheinlich an etwas, das mit dem Klassenpfad zusammenhängt, z. B. dass eine Testklasse, eine zu testende Klasse oder eine Bibliothek nicht gefunden werden kann.

Die Testausgabe sollte helfen zu klären, ob dies das Problem ist.

2voto

Sled Punkte 17564

Konkret habe ich meine junit_ant Aufgabe zu:

        <junit>
            <classpath location="." />

            <test name="SimpleTest" />
            <formatter type="xml" />
        </junit>

        <junitreport todir=".">
            <fileset dir=".">
                <include name="TEST-*.xml" />
            </fileset>
            <report todir="." />
        </junitreport>

Das hat mir dann gezeigt, dass der Fehler in der java.lang.ClassNotFoundException: SimpleTest also habe ich einfach hinzugefügt <classpath location="." /> zum <junit> Aufgabe und dann hat es funktioniert.

2voto

Radoslav Ivanov Punkte 767

Fügen Sie diese Zeile für weitere Informationen hinzu:

<formatter type="brief" usefile="false"/>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X