If I have a specs2 test like the following:
import org.specs2.mutable.Specification
import scala.util.Try
class Tests extends Specification {
def foo(): Unit = throw new Exception("oops")
"test" should {
"not throw an error" in {
Try(foo()) must beSuccessfulTry
}
}
}
specs2.run(new Tests)
(scastie)
Then I get the following output:
[info] test should
[error] x not throw an error
[error] Got the exception java.lang.Exception: oops (main.scala:11)
Notice that it doesn't include the stack trace for the actual exception that was thrown. This makes it a lot harder to
And myFunction throws an exception, then the error report just shows the stack trace for the failure for failing to match, since an exception was thrown. This makes it more difficult to figure out what went wrong.
Is there any way for me to get the full stacktrace for the original exception?
Is there a better way to write an expectation that something shouldn't throw an exception?
The
Trymatchers are more or less equivalent toOptionmatchers at the moment. This should probably be improved but you can easily work around this limitation by creating your own matcher:and use it like so: