Package org.assertj.core.util
Class Throwables
java.lang.Object
org.assertj.core.util.Throwables
Utility methods related to
Throwable
s.- Author:
- Alex Ruiz, Daniel Zlotin
-
Method Summary
Modifier and TypeMethodDescriptionaddLineNumberToErrorMessages
(List<? extends T> errors) static void
appendStackTraceInCurrentThreadToThrowable
(Throwable t, String methodToStartFrom) Appends the stack trace of the current thread to the one in the given
.Throwable
describeErrors
(List<? extends Throwable> errors) static StackTraceElement
getFirstStackTraceElementFromTest
(StackTraceElement[] stacktrace) static Throwable
getRootCause
(Throwable throwable) Get the root cause (i.e., the last non-null cause) from aThrowable
.static String
getStackTrace
(Throwable throwable) static void
Removes the AssertJ-related elements from the
stack trace that have little value for end user, that is assertj elements and the ones coming from assertj (for example assertj calling some java jdk classes to build assertion errors dynamically).Throwable
-
Method Details
-
describeErrors
-
appendStackTraceInCurrentThreadToThrowable
public static void appendStackTraceInCurrentThreadToThrowable(Throwable t, String methodToStartFrom) Appends the stack trace of the current thread to the one in the given
.Throwable
- Parameters:
t
- the givenThrowable
.methodToStartFrom
- the name of the method used as the starting point of the current thread's stack trace.
-
removeAssertJRelatedElementsFromStackTrace
Removes the AssertJ-related elements from the
stack trace that have little value for end user, that is assertj elements and the ones coming from assertj (for example assertj calling some java jdk classes to build assertion errors dynamically).Throwable
Therefore, instead of seeing this:
We get this:org.junit.ComparisonFailure: expected:<'[Ronaldo]'> but was:<'[Messi]'> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:501) at org.assertj.core.error.ConstructorInvoker.newInstance(ConstructorInvoker.java:34) at org.assertj.core.error.ShouldBeEqual.newComparisonFailure(ShouldBeEqual.java:111) at org.assertj.core.error.ShouldBeEqual.comparisonFailure(ShouldBeEqual.java:103) at org.assertj.core.error.ShouldBeEqual.newAssertionError(ShouldBeEqual.java:81) at org.assertj.core.internal.Failures.failure(Failures.java:76) at org.assertj.core.internal.Objects.assertEqual(Objects.java:116) at org.assertj.core.api.AbstractAssert.isEqualTo(AbstractAssert.java:74) at examples.StackTraceFilterExample.main(StackTraceFilterExample.java:13)
org.junit.ComparisonFailure: expected:<'[Ronaldo]'> but was:<'[Messi]'> at examples.StackTraceFilterExample.main(StackTraceFilterExample.java:20)
- Parameters:
throwable
- theThrowable
to filter stack trace.
-
getRootCause
Get the root cause (i.e., the last non-null cause) from aThrowable
.- Parameters:
throwable
- theThrowable
to get root cause from.- Returns:
- the root cause if any, else
null
.
-
getStackTrace
Get the stack trace from aThrowable
as aString
.The result of this method vary by JDK version as this method uses
Throwable.printStackTrace(java.io.PrintWriter)
. On JDK1.3 and earlier, the cause exception will not be shown unless the specified throwable alters printStackTrace.- Parameters:
throwable
- theThrowable
to get stack trace from.- Returns:
- the stack trace as a
String
.
-
addLineNumberToErrorMessages
-
getFirstStackTraceElementFromTest
-