java.lang.Object
org.junit.platform.engine.support.hierarchical.ThrowableCollector
Direct Known Subclasses:
OpenTest4JAwareThrowableCollector

@API(status=MAINTAINED,
     since="1.3")
public class ThrowableCollector
extends Object
Simple component that can be used to collect one or more instances of Throwable.

This class distinguishes between Throwables that abort and those that fail test execution. The latter take precedence over the former, i.e. if both types of Throwables were collected, the ones that abort execution are reported as suppressed Throwables of the first Throwable that failed execution.

Since:
1.3
See Also:
OpenTest4JAwareThrowableCollector
  • Constructor Details

    • ThrowableCollector

      public ThrowableCollector​(Predicate<? super Throwable> abortedExecutionPredicate)
      Create a new ThrowableCollector that uses the supplied Predicate to determine whether a Throwable aborted or failed execution.
      Parameters:
      abortedExecutionPredicate - the predicate used to decide whether a Throwable aborted execution; never null.
  • Method Details

    • execute

      public void execute​(ThrowableCollector.Executable executable)
      Execute the supplied ThrowableCollector.Executable and collect any Throwable thrown during the execution.

      If the Executable throws an unrecoverable exception — for example, an OutOfMemoryError — this method will rethrow it.

      Parameters:
      executable - the Executable to execute
      See Also:
      assertEmpty()
    • getThrowable

      public Throwable getThrowable()
      Get the first Throwable collected by this ThrowableCollector.

      If this collector is not empty, the first collected Throwable will be returned with any additional Throwables suppressed in the first Throwable.

      If the first collected Throwable aborted execution and at least one later collected Throwable failed execution, the first failing Throwable will be returned with the previous aborting and any additional Throwables suppressed inside.

      Returns:
      the first collected Throwable or null if this ThrowableCollector is empty
      See Also:
      isEmpty(), assertEmpty()
    • isEmpty

      public boolean isEmpty()
      Determine if this ThrowableCollector is empty (i.e., has not collected any Throwables).
    • isNotEmpty

      public boolean isNotEmpty()
      Determine if this ThrowableCollector is not empty (i.e., has collected at least one Throwable).
    • assertEmpty

      public void assertEmpty()
      Assert that this ThrowableCollector is empty (i.e., has not collected any Throwables).

      If this collector is not empty, the first collected Throwable will be thrown with any additional Throwables suppressed in the first Throwable. Note, however, that the Throwable will not be wrapped. Rather, it will be masked as an unchecked exception.

      See Also:
      getThrowable(), ExceptionUtils.throwAsUncheckedException(Throwable)
    • toTestExecutionResult

      @API(status=MAINTAINED, since="1.6") public TestExecutionResult toTestExecutionResult()
      Convert the collected Throwables into a TestExecutionResult.
      Returns:
      aborted if the collected Throwable aborted execution; failed if it failed execution; and successful otherwise
      Since:
      1.6