2012-03-29 5 views
2

Ich verwende Junit Test Runner als TestRunner.run (suite) innerhalb einer Java-Hauptmethode und führe diese lokal aus, die erfolgreich ausgeführt wird. Was ich stecken bin, ist, dass jeder Test-Suite i von der comamnd Zeile einSo überschreiben Sie die Standardausgabe der JUnit Test Suite

OK (1-Test) erzeugt ... OK (2-Test) ...

ich dieses Verhalten nicht wollen. Gibt es eine Möglichkeit, wie ich das loswerden kann? Ich habe viel gesucht und niemand scheint sich damit zu befassen.

Die Methode Regel und Klassen Regel Anmerkungen scheinen die Dinge in einer Suite Ebene (Abfangjäger) zu Handhabung, aber ich bin nicht in der Lage die Suite Ausgabe außer Kraft zu setzen, dass junit

Alle Zeiger auf dieser bereitstellt, wird sehr geschätzt

Antwort

1

Die Klasse TestRunner verfügt über eine setPrinter(ResultPrinter)-Methode, mit der Sie überschreiben können, was mit der Ausgabe geschieht. Sie können auch einen in den Konstruktor übergeben. Standardmäßig ist der Drucker:

new ResultPrinter(System.out); 

Wenn Sie zum Beispiel Unterklasse der ResultPrinter Sie den erfolgreichen Ausgang ausschalten könnte. So etwas sollte funktionieren:

public class MyResultPrinter extends ResultPrinter { 
    public MyResultPrinter(PrintStream writer) { 
     super(writer); 
    } 
     @Override 
    protected void printFooter(TestResult result) { 
     if (result.wasSuccessful()) { 
      // just drop the OK messages 
     } else { 
      // but print the failures 
      super.printFooter(result); 
     } 
    } 
} 

Dann würde es Ihnen gefällt verwenden:

new TestRunner(new MyResultPrinter(System.out)).run(suite); 
+0

Dank einer Tonne. Funktioniert super. – Nitin