Подтвердить что ты не робот

Как я могу получить полную стек стежков для исключений, брошенных в тестах при использовании sbt и testng?

Стеки стека усекаются - например, они заканчиваются на [info] ...

Использование last или изменение traceLevel не помогает - он просто печатает полный стек trace оболочки sbt.

Это тестирование с помощью testng (также я считаю, используя scalatest и sl4j)

4b9b3361

Ответ 1

Используя подсказки, найденные в здесь:

(цит)

Вы можете настроить вывод, показанный при запуске с помощью sbt, четырьмя способами: 1) выключить цвет, 2) показать короткие трассировки стека, 3) полные стеки стека и 4) показать длительность для всего. Для этого вы должны передать аргумент -o ScalaTest, а после -o поместить любую комбинацию из:

  • D - продолжительность показа
  • S - показать короткие трассировки стека
  • F - показать полные трассировки стека
  • W - без цвета

Например, "-oDF" будет показывать полные стеки и длительность стека (количество времени, затрачиваемого на каждый тест).

Чтобы передать аргументы из sbt в ScalaTest, вы можете либо добавить параметры теста по всему миру, например:

testOptions in Test += Tests.Argument("-oD")

(см. веб-сайт для остальной части цитаты)

Вы можете использовать следующую команду sbt для включения полной проверки стека в тестах:

> set testOptions in YourProjectName += Tests.Argument("-oF")

Ответ 2

В качестве альтернативы тому, чтобы SBT печатал полную трассировку стека, вы могли бы разместить блок try - catch вокруг вашего тестового бегуна? Например, из REPL:

scala> try { throw new Exception } catch { case e => e }
res1: java.lang.Throwable = java.lang.Exception

scala> res1.printStackTrace
java.lang.Exception
    at $line2.$read$$iw$$iw$.liftedTree1$1(<console>:8)
    at $line2.$read$$iw$$iw$.<init>(<console>:8)
    at $line2.$read$$iw$$iw$.<clinit>(<console>)
    ...