2009-06-08 5 views
17

Ich konfiguriere JUnit in Ant, so dass Komponententests bei jedem Build ausgeführt werden. Ich möchte, dass die Ausgabe von fehlgeschlagene Tests in der Ant-Konsole Ausgabe gedruckt werden, wenn sie ausgeführt werden. Ich muss keine Ausgabe von nachfolgenden Tests sehen.Wie konfiguriere ich den JUnit Ant-Task so, dass er nur bei Fehlern eine Ausgabe erzeugt?

Hier ist der relevante 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> 

Das fast was produziert ich will, Prüfungen nicht detailliert in der Ant-Ausgang, mit der Ausnahme, dass die folgenden 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 versucht, alle in der JUnit task Dokumentation aufgeführten Kombinationen, einschließlich:

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

wird My Anwendungsfall ant von der Befehlszeile ausgeführt werden. Während ich weitere Tests schreibe, möchte ich nicht, dass die Ausgabe der nachfolgenden Tests so groß ist, dass die Ausgabe fehlgeschlagener Tests vom Bildschirm abläuft. Ich möchte nur ant ruhig sein, es sei denn, es gibt einen fehlgeschlagenen Test, der meine Aufmerksamkeit braucht. Wie kann ich Ant/JUnit dafür konfigurieren?

Ich benutze Ant Version 1.6.4 und JUnit 4.6.

+0

Nur benutzerdefinierte JUnit benutzerdefinierte Test-Runner Möglichkeit hinzugefügt. – VonC

Antwort

13

Eine Möglichkeit wäre, Ihren eigenen XML-Formatierer mit dem Attribut 'classname' zu definieren (und org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter zu erweitern, was möglicherweise nichts an endTest() or endTestsuite() methods macht).
Dieser Formatierer würde Infomeldungen ignorieren und nur Fehlermeldungen anzeigen.


Hinweis: this settings erwähnen die Möglichkeit, nur die Anzeige nicht bestandenen Tests:

<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> 

Hast du das testen?

Hinweis: Die "showoutput="true" und <formatter type="brief" usefile="false"/>" ein bisschen problematisch sein kann, wie


Noch eine andere approch dieses recent (February 2012) ticket) dargestellt wäre Ihre ant Juint Test-Läufer zu definieren, Ameise Unterstützung JUnitResultFormatter und Anzeige nur stderr Nachrichten.

Die EclipseTestRunner von Eclipse ist ein gutes Beispiel.

+0

Sehr nette Antwort! – guerda

+0

Danke, das Beispiel, das du gezeigt hast, ist im Wesentlichen dasselbe wie das, was ich in meiner Frage gepostet habe, also denke ich, dass der Unterschied etwas damit zu tun haben könnte, es im Netbeans-Kontext auszuführen. Ich werde versuchen, einen benutzerdefinierten Formatierer zu implementieren, aber ich hatte gehofft, das zu vermeiden. –

+0

Ich habe einen benutzerdefinierten Formatierer implementiert und konnte mein ursprüngliches Ziel erreichen. –

Verwandte Themen