Package org.assertj.core.util
Class Throwables
- java.lang.Object
-
- org.assertj.core.util.Throwables
-
public final class Throwables extends java.lang.Object
Utility methods related to
s.Throwable
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.function.Function<java.lang.Throwable,java.lang.String>
ERROR_DESCRIPTION_EXTRACTOR
private static java.lang.String
JAVA_LANG_REFLECT_CONSTRUCTOR
private static java.lang.String
ORG_ASSERTJ
private static java.lang.String
ORG_ASSERTJ_CORE_ERROR_CONSTRUCTOR_INVOKER
-
Constructor Summary
Constructors Modifier Constructor Description private
Throwables()
-
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 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
private static <T extends java.lang.Throwable>
TbuildAssertionErrorWithLineNumbersButNoActualOrExpectedValues(T error, java.lang.StackTraceElement testStackTraceElement)
private static java.lang.String
buildErrorMessageWithLineNumber(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.StackTraceElement
getFirstStackTraceElementFromTest(java.lang.StackTraceElement[] stacktrace)
static java.lang.Throwable
getRootCause(java.lang.Throwable throwable)
Get the root cause (i.e., the last non-null cause) from aThrowable
.static java.lang.String
getStackTrace(java.lang.Throwable throwable)
Get the stack trace from aThrowable
as aString
.private static boolean
isInstanceOf(java.lang.Object object, java.lang.String className)
private static <T extends java.lang.Throwable>
booleanisOpentest4jAssertionFailedError(T error)
private static boolean
isProxiedAssertionClass(java.lang.String className)
static void
removeAssertJRelatedElementsFromStackTrace(java.lang.Throwable throwable)
Removes the AssertJ-related elements from the
stack trace that have little value for end user.Throwable
private static java.lang.String
simpleClassNameOf(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_CORE_ERROR_CONSTRUCTOR_INVOKER
private static final java.lang.String ORG_ASSERTJ_CORE_ERROR_CONSTRUCTOR_INVOKER
- See Also:
- Constant Field Values
-
JAVA_LANG_REFLECT_CONSTRUCTOR
private static final java.lang.String JAVA_LANG_REFLECT_CONSTRUCTOR
- See Also:
- Constant Field Values
-
ORG_ASSERTJ
private static final java.lang.String ORG_ASSERTJ
- 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 the
stack trace that have little value for end user. Therefore, instead of seeing this:Throwable
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 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at examples.StackTraceFilterExample.main(StackTraceFilterExample.java:20)
- Parameters:
throwable
- theThrowable
to filter stack trace.
-
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
- theThrowable
to 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 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
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)
-
-