Package org.assertj.core.util
Class Throwables
- java.lang.Object
-
- org.assertj.core.util.Throwables
-
public final class Throwables extends java.lang.ObjectUtility methods related tos.Throwable
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.function.Function<java.lang.Throwable,java.lang.String>ERROR_DESCRIPTION_EXTRACTORprivate static java.lang.StringJAVA_BASEprivate static java.lang.StringJDK_BASEprivate static java.lang.StringORG_ASSERTJ
-
Constructor Summary
Constructors Modifier Constructor Description privateThrowables()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static <T extends java.lang.Throwable>
TaddLineNumberToErrorMessage(T error)static <T extends java.lang.Throwable>
java.util.List<T>addLineNumberToErrorMessages(java.util.List<? extends T> errors)static voidappendStackTraceInCurrentThreadToThrowable(java.lang.Throwable t, java.lang.String methodToStartFrom)Appends the stack trace of the current thread to the one in the given.Throwableprivate static <T extends java.lang.Throwable>
TbuildAssertionErrorWithLineNumbersButNoActualOrExpectedValues(T error, java.lang.StackTraceElement testStackTraceElement)private static java.lang.StringbuildErrorMessageWithLineNumber(java.lang.String originalErrorMessage, java.lang.StackTraceElement testStackTraceElement)private static <T extends java.lang.Throwable>
TbuildOpentest4jAssertionFailedErrorWithLineNumbers(T error, java.lang.StackTraceElement testStackTraceElement)private static <T extends java.lang.Throwable>
TcreateNewInstanceWithLineNumberInErrorMessage(T error, java.lang.StackTraceElement testStackTraceElement)static java.util.List<java.lang.String>describeErrors(java.util.List<? extends java.lang.Throwable> errors)static java.lang.StackTraceElementgetFirstStackTraceElementFromTest(java.lang.StackTraceElement[] stacktrace)static java.lang.ThrowablegetRootCause(java.lang.Throwable throwable)Get the root cause (i.e., the last non-null cause) from aThrowable.static java.lang.StringgetStackTrace(java.lang.Throwable throwable)Get the stack trace from aThrowableas aString.private static booleanisFromAssertJ(java.lang.StackTraceElement stackTrace)private static booleanisFromJavaOrJdkPackages(java.lang.StackTraceElement stackTrace)private static booleanisInstanceOf(java.lang.Object object, java.lang.String className)private static <T extends java.lang.Throwable>
booleanisOpentest4jAssertionFailedError(T error)private static booleanisProxiedAssertionClass(java.lang.String className)static voidremoveAssertJRelatedElementsFromStackTrace(java.lang.Throwable throwable)Removes the AssertJ-related elements from thestack 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).Throwableprivate static java.lang.StringsimpleClassNameOf(java.lang.StackTraceElement testStackTraceElement)private static java.util.List<java.lang.StackTraceElement>stackTraceInCurrentThread()private static java.util.List<java.lang.StackTraceElement>stackTraceInCurrentThread(java.lang.String methodToStartFrom)
-
-
-
Field Detail
-
ORG_ASSERTJ
private static final java.lang.String ORG_ASSERTJ
- See Also:
- Constant Field Values
-
JAVA_BASE
private static final java.lang.String JAVA_BASE
- See Also:
- Constant Field Values
-
JDK_BASE
private static final java.lang.String JDK_BASE
- See Also:
- Constant Field Values
-
ERROR_DESCRIPTION_EXTRACTOR
private static final java.util.function.Function<java.lang.Throwable,java.lang.String> ERROR_DESCRIPTION_EXTRACTOR
-
-
Method Detail
-
describeErrors
public static java.util.List<java.lang.String> describeErrors(java.util.List<? extends java.lang.Throwable> errors)
-
appendStackTraceInCurrentThreadToThrowable
public static void appendStackTraceInCurrentThreadToThrowable(java.lang.Throwable t, java.lang.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.
-
stackTraceInCurrentThread
private static java.util.List<java.lang.StackTraceElement> stackTraceInCurrentThread(java.lang.String methodToStartFrom)
-
stackTraceInCurrentThread
private static java.util.List<java.lang.StackTraceElement> stackTraceInCurrentThread()
-
removeAssertJRelatedElementsFromStackTrace
public static void removeAssertJRelatedElementsFromStackTrace(java.lang.Throwable throwable)
Removes the AssertJ-related elements from thestack 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).ThrowableTherefore, 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- theThrowableto filter stack trace.
-
isFromAssertJ
private static boolean isFromAssertJ(java.lang.StackTraceElement stackTrace)
-
isFromJavaOrJdkPackages
private static boolean isFromJavaOrJdkPackages(java.lang.StackTraceElement stackTrace)
-
getRootCause
public static java.lang.Throwable getRootCause(java.lang.Throwable throwable)
Get the root cause (i.e., the last non-null cause) from aThrowable.- Parameters:
throwable- theThrowableto get root cause from.- Returns:
- the root cause if any, else
null.
-
getStackTrace
public static java.lang.String getStackTrace(java.lang.Throwable throwable)
Get the stack trace from aThrowableas 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- theThrowableto get stack trace from.- Returns:
- the stack trace as a
String.
-
addLineNumberToErrorMessages
public static <T extends java.lang.Throwable> java.util.List<T> addLineNumberToErrorMessages(java.util.List<? extends T> errors)
-
getFirstStackTraceElementFromTest
public static java.lang.StackTraceElement getFirstStackTraceElementFromTest(java.lang.StackTraceElement[] stacktrace)
-
isProxiedAssertionClass
private static boolean isProxiedAssertionClass(java.lang.String className)
-
addLineNumberToErrorMessage
private static <T extends java.lang.Throwable> T addLineNumberToErrorMessage(T error)
-
createNewInstanceWithLineNumberInErrorMessage
private static <T extends java.lang.Throwable> T createNewInstanceWithLineNumberInErrorMessage(T error, java.lang.StackTraceElement testStackTraceElement) throws java.lang.ReflectiveOperationException- Throws:
java.lang.ReflectiveOperationException
-
isOpentest4jAssertionFailedError
private static <T extends java.lang.Throwable> boolean isOpentest4jAssertionFailedError(T error)
-
isInstanceOf
private static boolean isInstanceOf(java.lang.Object object, java.lang.String className)
-
buildAssertionErrorWithLineNumbersButNoActualOrExpectedValues
private static <T extends java.lang.Throwable> T buildAssertionErrorWithLineNumbersButNoActualOrExpectedValues(T error, java.lang.StackTraceElement testStackTraceElement) throws java.lang.ReflectiveOperationException- Throws:
java.lang.ReflectiveOperationException
-
buildOpentest4jAssertionFailedErrorWithLineNumbers
private static <T extends java.lang.Throwable> T buildOpentest4jAssertionFailedErrorWithLineNumbers(T error, java.lang.StackTraceElement testStackTraceElement) throws java.lang.ReflectiveOperationException- Throws:
java.lang.ReflectiveOperationException
-
buildErrorMessageWithLineNumber
private static java.lang.String buildErrorMessageWithLineNumber(java.lang.String originalErrorMessage, java.lang.StackTraceElement testStackTraceElement)
-
simpleClassNameOf
private static java.lang.String simpleClassNameOf(java.lang.StackTraceElement testStackTraceElement)
-
-