2011-08-23 14 views
5

Kontekst: Pisanie testów jednostkowych Scala w projekcie zarządzanym przez SBT.Uzyskiwanie śladu stosu z SBT ze Scala

Kiedy wykonać sbt test uruchomić mój jednostkę testów assert nie gdzieś w moim kodu, mam coś jak następuje (i nic więcej):

Test com.reach.ml.test.TestLSHEasy.T0 failed: assertion failed 

to mówi mi, które jednostka test spowodował twierdzenie nie udaje się, ale nie jest takie, które zapewniało. Jeśli uruchomię ten sam test bezpośrednio (bez użycia sbt), otrzymam cały ślad stosu, który jest bardzo przydatny do debugowania. Więc moje pytanie: Jak uzyskać SBT, aby wydrukować ślad stosu, gdy test się zawiesi?

+0

Czy to nie "ostatni test" pokazujący wszystkie wyniki wykonania testu? – Geo

+0

Nie, wszystkie związane z testem dane wyjściowe, gdy działają, to: "" " [informacje] Przekazywane:: Łącznie 9, Nieudane 0, Błędy 0, Przekazane 9, Pominięte 0 [Sukces] Łączny czas: 9 s , zakończone 22 sierpnia 2011 11:33:29 PM "" " " Jeśli wystąpił błąd, jest tylko wiersz, który napisałem pierwszy i inny, który mówi zasadniczo to samo. – emchristiansen

+0

Co Geo miał na myśli to, że kiedy 'test' nie powiedzie się z wyjątkiem SBT, nie wpisując" ostatniego testu "pokazuje pełny wyjątek? –

Odpowiedz

2

Jeśli chodzi o xsbt, może to być związane z obiektem util.log.StackTrace, który może przyciąć jego wyjście.
issue 118 ilustrowany wolę utrzymania ślady stosu powinny być pod lepszą kontrolą:

więc nie należy zauważyć, że ślad domyślnie.

Może można owinąć testów jednostkowych, przechwytując żadnego wyjątku i drukowanie jawnie ich pełną ślad stosu? (jak w Basic.scala lub Boot.scala).

+1

Dzięki. Wygląda na to, że programiści poszli trochę za burtę, próbując oczyścić drukowanie błędów. W każdym razie SBT jest świetnym narzędziem i owijanie blokami try/catch, choć nie jest idealne, nie jest trudne. – emchristiansen

Powiązane problemy