gibt keine Exception-Stack-Trace in EUnit aus

7

Ich schreibe einen Test mit EUnit, aber keine Ausnahme Detailausgabe in der Konsole.

%Vor%

Führen Sie dieses Modul aus: exp_test () in der Erlang Shell-Ausgabe nach

%Vor%

Aber in EUnit Ausgabe nach

%Vor%

EUnit gibt nichts Exception Trace Info

aus

Ich versuche die ausführliche Konfiguration in eunit, aber keinen Effekt.

Ich möchte einige Ausnahmedetails in eunit-Testergebnissen ausgeben.

Danke ~

    
hpyhacking 09.05.2012, 02:52
quelle

4 Antworten

4

Eunit ist ziemlich alt, und obwohl es offiziell von dem OTP-Team bei Ericsson gepflegt wird, ist es normalerweise unbeachtet. Eunit hat derzeit die schlechte Angewohnheit, Stack-Spuren aufzufressen, und wurde in den Ausnahmen für R15s Zeilennummern nicht aktualisiert.

Ich würde nicht argumentieren, dass "so soll es funktionieren". Kein gesundes Testwerkzeug sollte Ausnahmedetails und Zeilennummern für Sie ausblenden.

    
Adam Lindberg 09.05.2012, 05:32
quelle
7

Das Problem scheint zu sein, dass die mit R15 ausgelieferte Version von eunit das neue Stack-Trace-Format in R15 nicht versteht. Dies wurde in der Entwicklungsversion von eunit behoben: github.com/richcarl/eunit

Zum Beispiel:

%Vor%

Ich hoffe, das wird es in die nächste Version von OTP R15 schaffen.

    
RichardC 10.05.2012 09:42
quelle
7

Dies ist ein bekanntes Problem in eunit, wie in R15B und R15B01 veröffentlicht. Dies wurde in Release R15B02 behoben. Wenn Sie eine frühere Version verwenden, können Sie einen Patch herunterladen und anwenden:

Eine Problemumgehung für Releases vor R15B02

Sie können das Problem in Ihrer lokalen Installation beheben, indem Sie das betroffene Modul erneut kompilieren:

  1. Laden Sie die Erlang / OTP-Quellen herunter und entpacken Sie sie, falls Sie sie noch nicht haben.

    %Vor%
  2. Laden Sie den Patch herunter .

    %Vor%
  3. Kompilieren Sie eunit_lib.erl erneut.

    %Vor%
  4. Kopiere die neue eunit_lib.beam über die alte (normalerweise irgendwo unter /usr/local ).

    %Vor%
legoscia 22.06.2012 17:22
quelle
2

Ein Trick, den ich gerne benutze, ist ?debugVal(catch expr) , wobei Ausdruck entweder ein begin end Block ist oder ein Aufruf der fehlerhaften Funktion. Zum Beispiel gibt ?debugVal(catch begin 1 = 2 end) in Ihren Tests einen Stacktrace aus.

    
rramsden 18.07.2012 23:06
quelle

Tags und Links