19 Stimmen

Wie konfiguriere ich die JUnit-Ant-Aufgabe so, dass sie nur bei Fehlern ausgegeben wird?

Ich konfiguriere JUnit in Ant so, dass Unit-Tests bei jedem Build ausgeführt werden. Ich möchte die Ausgabe von ausfallend Tests, die in der Ant-Konsolenausgabe ausgegeben werden, wenn sie ausgeführt werden. Ich brauche keine Ausgaben von nachfolgenden Tests zu sehen.

Hier ist der entsprechende Teil meiner build.xml Datei:

<junit>
    <classpath>
        <pathelement path="${build}"/>
    </classpath>
    <formatter type="brief" usefile="false"/>
    <batchtest>
        <fileset dir="${src}" includes="my/tree/junit/"/>
    </batchtest>
</junit>

Dies führt fast zu dem, was ich will, fehlgeschlagene Tests werden in der Ant-Ausgabe aufgeführt, außer dass nachfolgende Tests auch die folgende Ausgabe schreiben:

    \[junit\] Testsuite: my.tree.junit.ExampleTest
    \[junit\] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.002 sec

Ich glaube, ich habe alle Kombinationen ausprobiert, die in der JUnit-Aufgabe Dokumentation, einschließlich:

  • printsummary Attribut
  • showoutput Attribut
  • formatter Element mit jeder Art von type

Mein Anwendungsfall ist die Ausführung ant über die Befehlszeile. Wenn ich mehr Tests schreibe, möchte ich nicht, dass die Ausgabe von erfolgreichen Tests so groß ist, dass die Ausgabe von fehlgeschlagenen Tests über den Bildschirm rollt. Ich möchte nur ant ruhig zu sein, es sei denn, es gibt einen nicht bestandenen Test, der meine Aufmerksamkeit erfordert. Wie kann ich Ant/JUnit so konfigurieren, dass es dies tut?

Ich verwende Ant Version 1.6.4 und JUnit 4.6.

13voto

VonC Punkte 1117238

Eine Möglichkeit wäre, einen eigenen Xml-Formatierer mit dem ' classname ' Attribut (und die Erweiterung org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter und möglicherweise nichts zu tun. endTest() o endTestsuite() Methoden ).
Dieser Formatierer würde Info-Meldungen ignorieren und nur Fehlermeldungen anzeigen.


Anmerkung: diese Einstellungen die Möglichkeit erwähnen, nur die fehlgeschlagenen Tests anzuzeigen:

<junit showoutput="true"
       fork="true"
       failureproperty="tests.failed"
       errorproperty="tests.failed">
    <batchtest todir="${test.results.dir}">
        <fileset dir="test">
            <include name="**/*Test.java"/>
        </fileset>
    </batchtest>
    <classpath path="${classes.dir}:${junit.jar}:${test.classes.dir}"/>
    <formatter usefile="false" type="brief"/>
    <!-- <formatter type="xml"/> If missing, only displays failed tests -->
</junit>

Haben Sie das getestet?

Anmerkung: Die " showoutput="true" y <formatter type="brief" usefile="false"/> " kann ein wenig problematisch sein, wie dieses Beispiel zeigt aktuelles Ticket (Februar 2012) )


Ein anderer Ansatz wäre, einen Ameisen-Juint-Test-Runner zu definieren, der Ameisen JUnitResultFormatter und zeigt nur stderr-Meldungen an.

El EclipseTestRunner von eclipse ist ein gutes Beispiel.

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