Wie ändert man die "Test" -Einstellungen von Play Framework 2, um vollständige Stacktraces anzuzeigen?

8

Ich verwende Java im Play-Framework und ich habe einige Tests (Funktionstests), die übergeben werden, wenn ich sie durch meine IDE (IntelliJ) ausführe, aber fehlgeschlagen, wenn ich die Tests über die Konsole durchführe.

Meine Probleme bestehen darin, dass die Stack-Traces, die in den Testprotokollen angezeigt werden, nur zwei Zeilen umfassen und ich die komplette Stack-Trace benötige, um zu sehen, was dort passiert. Ich habe jede Kombination von Einstellungen ausprobiert: spec2-Einstellungen , indem Sie sie in build.sbt setzen oder in der Befehlszeile bereitstellen. Es scheint, dass es keinen Effekt gibt! Hier ist meine build.sbt :

%Vor%

Kann mir bitte jemand helfen? Ich verwende Typesafe activator (play 2.2.2). Danke

    
Hossein 07.05.2014, 12:22
quelle

2 Antworten

12

In Play 2.3.2 kann dies mit der Option -a in build.sbt :

erreicht werden %Vor%

Ich benutze:

%Vor%

, da dies Nachrichten für gestarteten / abgeschlossenen Test ( -v ) bereitstellt und die Protokollierung für bestandene Tests unterdrückt ( -q ).

Alle verfügbaren Optionen finden Sie in der SBT JUnit-Benutzeroberfläche :

  • -v Protokolliere "Testlauf gestartet" / "Test gestartet" / "Testlauf beendet" Ereignisse auf Log-Level "Info" statt "Debug".
  • -q Unterdrückt stdout für erfolgreiche Tests. Stderr wird normalerweise auf die Konsole gedruckt. Stdout wird in einen Puffer geschrieben und verworfen, wenn ein Test erfolgreich ist. Wenn dies fehlschlägt, wird der Puffer an die Konsole ausgegeben. Da die stdio-Umleitung in Java ein schlechter Kludon ist (System.setOut () ändert das statische Endfeld System.out durch nativen Code), funktioniert dies möglicherweise nicht für alle Szenarien. Scala hat eine eigene Konsole mit einer normalen Umleitungsfunktion. Wenn Scala im Klassenpfad gefunden wird, versucht junit-interface auch die stdout von scala.Console umzuleiten.
  • -n Verwenden Sie keine ANSI-Farben in der Ausgabe, selbst wenn sbt meldet, dass sie unterstützt werden.
  • -s Versuchen Sie Scala-Namen in Stack-Traces und Testnamen zu dekodieren. Rückfall auf nicht dekodierte Namen, wenn sich keine passende Scala-Bibliothek im Klassenpfad befindet.
  • -a Zeigt Stack-Traces und den Exception-Klassennamen für AssertionErrors an (wird von allen assert * -Methoden in JUnit ausgelöst). Ohne diese Option drucken fehlgeschlagene Assertions keine Stack-Trace oder das Präfix "java.lang.AssertionError:".
  • -c Das Präfix der Ausnahmenamen für alle Nachrichten wird nicht gedruckt. Mit dieser Option wird nur das Ergebnis von getMessage () plus einem Stack-Trace angezeigt.
  • +v Deaktiviere -v. Vorrang vor -v.
  • +q Deaktiviere -q. Vorrang vor -q.
  • +n Deaktiviere -n. Vorrang vor -n.
  • +s Deaktiviert -s. Vorrang vor -s.
  • +a Deaktiviert -a. Vorrang vor -a.
  • +c Deaktiviere -c. Vorrang vor -c.
  • --ignore-runners=<COMMA-SEPARATED-STRINGS> Ignoriere Tests mit einer Annotation @RunWith, wenn der Name der Runner-Klasse in dieser Liste enthalten ist. Der Standardwert ist org.junit.runners.Suite.
  • --tests=<REGEXPS> Führt nur die Tests aus, deren Namen mit einem der angegebenen regulären Ausdrücke übereinstimmen (in einer durch Kommas getrennten Liste). Nicht übereinstimmende Tests werden ignoriert. Nur einzelne Testfallnamen werden verglichen, keine Testklassen. Beispiel: Für den Test MyClassTest.testBasic () wird nur "testBasic" abgeglichen. Verwenden Sie stattdessen den test-only-Befehl von sbt, um Testklassen zuzuordnen.
  • -Dkey=value Legen Sie vorübergehend eine Systemeigenschaft für die Dauer des Testlaufs fest. Nach dem Ende des Tests wird die Eigenschaft auf ihren vorherigen Wert zurückgesetzt. Beachten Sie, dass die Systemeigenschaften für die gesamte JVM global sind und sie nicht transaktional geändert werden können. Daher sollten Sie Tests seriell ausführen und keine anderen Aufgaben parallel durchführen, die von der geänderten Eigenschaft abhängen.
  • --run-listener=<CLASS_NAME> Eine (benutzerdefinierte) Klasse, die org.junit.runner.notification.RunListener erweitert. Eine Instanz dieser Klasse wird erstellt und zum JUnit-Runner hinzugefügt, sodass sie die Ausführungsereignisse erhält. Weitere Informationen finden Sie unter RunListener. Hinweis: Dies verwendet den Test-Classloader, daher muss die Klasse in src / test oder src / main definiert sein oder als Test- oder Kompilierabhängigkeit enthalten sein
  • --include-categories=<CLASSES> Eine durch Kommas getrennte Liste von Klassenklassennamen, die enthalten sein sollen. Es werden nur Tests mit einer oder mehreren dieser Kategorien ausgeführt.
  • --exclude-categories=<CLASSES> Eine durch Kommas getrennte Liste von Klassennamen, die ausgeschlossen werden sollen. Es werden keine Tests ausgeführt, die einer oder mehreren dieser Kategorien entsprechen.
Tony Day 02.09.2014, 09:39
quelle
0

Play 2.2.3 wurde gerade veröffentlicht. Beinhaltet eine Fehlerbehebung für den Fehler 2535, von der ich denke, dass sie das Problem ist, das Sie sehen.

Ссылка

    
IanRae 07.05.2014 20:18
quelle