-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
MockitoAssertionError.java
64 lines (55 loc) · 2.58 KB
/
MockitoAssertionError.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.exceptions.base;
import org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter;
/**
* Base class for verification errors emitted by Mockito.
* Verification errors are triggered by "verify" methods,
* for example {@link org.mockito.Mockito#verify(Object)} or {@link org.mockito.Mockito#verifyNoMoreInteractions(Object...)}.
* All error classes that inherit from this class will have the stack trace filtered.
* Filtering removes Mockito internal stack trace elements to provide clean stack traces and improve productivity.
* <p>
* The stack trace is filtered from mockito calls if you are using {@link #getStackTrace()}.
* For debugging purpose though you can still access the full stacktrace using {@link #getUnfilteredStackTrace()}.
* However note that other calls related to the stackTrace will refer to the filter stacktrace.
* <p>
* Advanced users and framework integrators can control stack trace filtering behavior
* via {@link org.mockito.plugins.StackTraceCleanerProvider} classpath plugin.
*/
public class MockitoAssertionError extends AssertionError {
private static final long serialVersionUID = 1L;
private final StackTraceElement[] unfilteredStackTrace;
public MockitoAssertionError(String message) {
super(message);
unfilteredStackTrace = getStackTrace();
ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter();
filter.filter(this);
}
/**
* Creates a copy of the given assertion error with the custom failure message prepended.
* @param error The assertion error to copy
* @param message The custom message to prepend
* @since 2.1.0
*/
public MockitoAssertionError(MockitoAssertionError error, String message) {
super(message + "\n" + error.getMessage());
super.setStackTrace(error.getStackTrace());
unfilteredStackTrace = error.getUnfilteredStackTrace();
}
/**
* Creates a copy of the given assertion error with the custom failure message prepended.
* @param error The assertion error to copy
* @param message The custom message to prepend
* @since 3.3.13
*/
public MockitoAssertionError(AssertionError error, String message) {
super(message + "\n" + error.getMessage());
unfilteredStackTrace = error.getStackTrace();
super.setStackTrace(unfilteredStackTrace);
}
public StackTraceElement[] getUnfilteredStackTrace() {
return unfilteredStackTrace;
}
}