Fix NoClassDefFoundError when Mockito is missing

Update MockReset class to check for the presence of the MockUtil class
before attempting to use it.

Fixes gh-7065
This commit is contained in:
Madhura Bhave
2016-10-03 17:32:33 -07:00
committed by Phillip Webb
parent 3326841a97
commit 16fe332f51
5 changed files with 110 additions and 8 deletions

View File

@@ -26,6 +26,7 @@ import org.mockito.listeners.MethodInvocationReport;
import org.mockito.mock.MockCreationSettings;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
/**
* Reset strategy used on a mock bean. Usually applied to a mock via the
@@ -53,8 +54,6 @@ public enum MockReset {
*/
NONE;
private static final MockUtil util = new MockUtil();
/**
* Create {@link MockSettings settings} to be used with mocks where reset should occur
* before each test method runs.
@@ -105,12 +104,15 @@ public enum MockReset {
@SuppressWarnings("rawtypes")
static MockReset get(Object mock) {
MockReset reset = MockReset.NONE;
if (util.isMock(mock)) {
MockCreationSettings settings = util.getMockSettings(mock);
List listeners = settings.getInvocationListeners();
for (Object listener : listeners) {
if (listener instanceof ResetInvocationListener) {
reset = ((ResetInvocationListener) listener).getReset();
if (ClassUtils.isPresent("org.mockito.internal.util.MockUtil", null)) {
MockUtil mockUtil = new MockUtil();
if (mockUtil.isMock(mock)) {
MockCreationSettings settings = mockUtil.getMockSettings(mock);
List listeners = settings.getInvocationListeners();
for (Object listener : listeners) {
if (listener instanceof ResetInvocationListener) {
reset = ((ResetInvocationListener) listener).getReset();
}
}
}
}