Frage

Wir haben sowohl JUnit 4 migriert und Ant 1.7

Die Tests laufen gut in Eclipse, aber die Anmerkungen ignoriert werden, wenn die Tests laufen Ameise verwenden.

Nach der Ant junit Aufgabe Dokumentation :

  

Es funktioniert auch mit JUnit 4.0, einschließlich "reinen" JUnit 4 Tests mit nur Anmerkungen und keine JUnit4TestAdapter.

Aber die Dokumentation erarbeitet nicht, wie sollte es konfiguriert werden.

Gibt es eine spezielle Einstellung für die junit Aufgabe erforderlich? Bin ich etwas fehlt? Wir haben beiden Tests, die Testcase (das heißt 3,8-Stil) und „reine“ JUnit 4 Tests erstreckt, könnte das das Problem sein?

War es hilfreich?

Lösung

Ich bin mit reinen JUnit4 Tests mit Ant.

Hier ist der interessante Teil meiner Build-Datei:

<junit printsummary="yes" haltonfailure="yes">
    <formatter type="xml"/>
    <classpath refid="path.test"/>
    <batchtest fork="yes" todir="${dir.report.unittests.xml}">
        <fileset dir="src">
            <include name="**/*Test*.java"/>
        </fileset>
    </batchtest>
</junit>

Stellen Sie sicher, dass Sie die neueste Version der junit.jar Datei im Verzeichnis lib Ant haben. Soweit ich die erforderliche Version weiß, mit Ant 1.7 oder höher Versionen geliefert ...

Andere Tipps

Ant Schiffe mit einer Version von JUnit 3 voreingestellt. JUnit 3 hat keine Unterstützung für Test Anmerkungen.

JUnit 4 Anmerkungen aus der junit Aufgabe zu verwenden stellen Sie sicher, dass Sie die Position eines JUnit 4 Glas in einem verschachtelten Classpath Elemente der junit Aufgabe zur Verfügung stellen (siehe dieser Eintrag in der ant FAQ ).

<junit showoutput="yes" fork="true">
    <classpath>
        <!-- The location of the JUnit version that you want to use -->
        <pathelement location="lib/junit-4.9b1.jar"/>
    </classpath>

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

    <batchtest>
        <fileset dir="${tests.dir}"/>
    </batchtest>
</junit>

Dies ist eine bevorzugte Lösung, um die Ameisen junit.jar in ANT_HOME / lib zu überschreiben, da es bedeutet, dass Sie Ihr JUnit Glas in der Quellcodeverwaltung neben Ihrem Code macht Upgrades zu höheren Versionen einfach zu halten.

Beachten Sie, dass, während ich nicht angegeben haben jede schließen Muster in meinem fileset über das bedeutet, dass die junit Aufgabe JUnit gegen alle Klassen in dieser Verzeichnisstruktur ausgeführt wird versuchen, die in einer Reihe von Klassen enthalten möglicherweise dazu führen könnte, dass don ‚t keine Tests enthalten, je nachdem, wie Sie Ihre Quelldateien strukturiert haben.

Sie können schließlich nur finden und führen Tests mit den skipNonTests Parameter in ant 1.9.3+ hinzugefügt!

Dies ist der Code-Schnipsel aus der akzeptierten Antwort oben (mit Ausnahme des neuen skipNonTests Parameter und immer von dem „Test“ im Dateinamen Anforderung befreien):

<junit printsummary="yes" haltonfailure="yes">
    <formatter type="xml"/>
    <classpath refid="path.test"/>
    <batchtest skipNonTests="true" fork="yes" todir="${dir.report.unittests.xml}">
        <fileset dir="src">
            <include name="**/*.java"/>
        </fileset>
    </batchtest>
</junit>

Das ist mir passiert ist, und es war, weil ich beide mit Anmerkungen war und sich Testcase.

public class TestXXX extends TestCase {

    @Test
    public void testSimpleValidCase() {
        // this was running
    }

    @Test
    public void simpleValidCase() {
        // this wasn't running
    }
}

Wenn Sie erweitern Sie Testcase JUnit3 Stil gehen davon aus so JUnit4 Anmerkungen ignoriert werden.

Die Lösung erweitert Testcase zu stoppen.

Überprüfen Sie Ihre Classpath Definition ... dies mein Problem gelöst.

<path id="classpath" description="Classpath do Projeto">
    <fileset dir="${LIB}">
        <include name="**/*.jar" />
        <exclude name="**/.SVN/*.*"/>
    </fileset>
</path>

Dies ist der relevante Teil meines generic Ant-Skripts ... nicht sicher, ob das Ihnen helfen wird oder nicht ..

 <junit fork="true"
        forkmode="once"
        haltonfailure="false"
        haltonerror="false"
        failureproperty="tests.failures"
        errorproperty="tests.errors"
        includeantruntime="true"
        showoutput="true"
        printsummary="true">
     <classpath>
         <path refid="path-id.test.classpath.run"/>
     </classpath>

     <formatter type="xml"/>

     <batchtest fork="yes"
                todir="${dir.build.testresults}">
         <fileset dir="${dir.src.tests}">
             <include name="**/*Test.java"/>
         </fileset>
     </batchtest>
 </junit>

Wenden Sie diese Anmerkung zu den anderen Klassen org.junit.Ignore

Ich habe auch versucht, ohne JUnit4TestAdapter, das heißt ohne Verfahren
mit JUnit 4.0 Tests zu tun     public static junit.framework.Test Suite () {         return new JUnit4TestAdapter (SomeTestClass.class);     }

Ich verwende Ameise 1.9.4. Laufende Ameise Test ausführliche (ant -v) zeigt

  

[junit] Ausführen mehrerer Tests in der gleichen VM
    [Junit] Implizit Zugabe /usr/share/java/junit.jar:/usr/sharejava/ant-launcher.jar:/usr/share/java/ant.jar:/usr/share/java/ant/ant-junit .jar zu CLASSPATH

Aha, aber noch gibt es einige Ameisen junit-Aufgabe. Das Herunterladen dieser zeigt zusätzlich /usr/share/java/ant/ant-junit4.jar die nicht implizit hinzugefügt. Ich habe es nur ausdrücklich:

<junit printsummary="yes" 
    fork="yes" 
    forkmode="once"
    maxmemory="1023m" 
    showoutput="no">
    ...
   <classpath>
     <pathelement path="...:${junitJar}:${hamcrestJar}:/usr/share/java/ant/ant-junit4.jar" />
   </classpath>
...
</junit>

und es funktioniert. Ohne: nein. Ich bin mir bewusst, dass diese Lösung nicht schön ist überhaupt ...

Was ich am Ende tat eine Ameise zu einem meiner Definitionen hinzufügen, die> von der Aufgabe verwendet wird. Et voila.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top