How can I get complete stacktraces for exceptions thrown in tests when using sbt and testng?

ScalaTestngSbtScalatestSlf4j

Scala Problem Overview


The stacktraces are truncated - e.g. they end with [info] ...

Using last or changing traceLevel doesn't help - it simply prints the complete stacktrace of the sbt wrapper.

This is testing with testng (also I believe using scalatest and sl4j)

Scala Solutions


Solution 1 - Scala

Using hints found in the documentation here:

(quoted)

> You can configure the output shown when running with sbt in four ways: 1) turn off color, 2) show short stack traces, 3) full stack traces, and 4) show durations for everything. To do so you must pass a -o argument to ScalaTest, and after the -o, place any combination of: > > * D - show durations > * S - show short stack traces > * F - show full stack traces > * W - without color > > For example, "-oDF" would show full stack traces and durations (the amount of time spent in each test). > > To pass arguments from sbt to ScalaTest you can either add test options globally, like this: > > testOptions in Test += Tests.Argument("-oD")

(See the website for the rest of the quote)

You can use the following sbt command to enable full stack traces in tests:

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

Per Sasha's comment, this can also be done from the command line per test run as shown below.

$ sbt test -- -oF

Solution 2 - Scala

As an alternative to getting SBT to print the full stack trace, could you put a try-catch block around your test runner? For example, from the 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>)
    ...

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionwn-View Question on Stackoverflow
Solution 1 - ScalaDavidView Answer on Stackoverflow
Solution 2 - ScalaKipton BarrosView Answer on Stackoverflow