Class ThrowableCollector

  • Direct Known Subclasses:
    OpenTest4JAwareThrowableCollector

    @API(status=MAINTAINED,
         since="1.3")
    public class ThrowableCollector
    extends java.lang.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
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static interface  ThrowableCollector.Executable
      Functional interface for an executable block of code that may throw a Throwable.
      static interface  ThrowableCollector.Factory
      Factory for ThrowableCollector instances.
    • Constructor Summary

      Constructors 
      Constructor Description
      ThrowableCollector​(java.util.function.Predicate<? super java.lang.Throwable> abortedExecutionPredicate)
      Create a new ThrowableCollector that uses the supplied Predicate to determine whether a Throwable aborted or failed execution.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void assertEmpty()
      Assert that this ThrowableCollector is empty (i.e., has not collected any Throwables).
      void execute​(ThrowableCollector.Executable executable)
      Execute the supplied ThrowableCollector.Executable and collect any Throwable thrown during the execution.
      java.lang.Throwable getThrowable()
      Get the first Throwable collected by this ThrowableCollector.
      boolean isEmpty()
      Determine if this ThrowableCollector is empty (i.e., has not collected any Throwables).
      boolean isNotEmpty()
      Determine if this ThrowableCollector is not empty (i.e., has collected at least one Throwable).
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ThrowableCollector

        public ThrowableCollector​(java.util.function.Predicate<? super java.lang.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 Detail

      • execute

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

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

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

        public java.lang.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)