Executes the supplied code (a by-name parameter) and returns an Outcome
.
Executes the supplied code (a by-name parameter) and returns an Outcome
.
Because Error
s are used to denote serious errors, ScalaTest does not always treat a test that completes abruptly with
an Error
as a test failure, but sometimes as
an indication that serious problems have arisen that should cause the run to abort, and the outcomeOf
method exhibits
the same behavior. For example, if a test completes abruptly
with an OutOfMemoryError
, it will not be reported as a test failure, but will instead cause the run to abort.
Because not everyone uses Error
s only to represent serious problems, however, ScalaTest only behaves this way
for the following exception types (and their subclasses):
java.lang.annotation.AnnotationFormatError
java.awt.AWTError
java.nio.charset.CoderMalfunctionError
javax.xml.parsers.FactoryConfigurationError
java.lang.LinkageError
java.lang.ThreadDeath
javax.xml.transform.TransformerFactoryConfigurationError
java.lang.VirtualMachineError
The previous list includes all Error
s that exist as part of Java 1.5 API, excluding java.lang.AssertionError
.
If the code supplied to outcomeOf
completes abruptly in one of the errors in the previous list, outcomeOf
will not return an Outcome
, but rather will complete abruptly with the same exception.
will wrap any other exception thrown by the supplied code in a Some
and return it.
The outcomeOf
method (and ScalaTest in general) does treat a thrown AssertionError
as an indication of a test failure and therefore
returns a Failed
wrapping the AssertionError
. In addition, any other Error
that is not an instance of a
type mentioned in the previous list will be caught by the outcomeOf
and transformed as follows:
If the code block completes normally (i.e., it doesn't throw any exception), outcomeOf
results in Succeeded
.
a block of code to execute
an Outcome
representing the outcome of executing the block of code
Trait that contains the
outcomeOf
method, which executes a passed code block and transforms the outcome into anOutcome
, using the same mechanism used by ScalaTest to produce anOutcome
when executing a test.For an example of
outcomeOf
in action, see the documentation for classTableFor2
.