From ed829d79814fadd93ae81a9749ea3b2367e4cce4 Mon Sep 17 00:00:00 2001 From: Marcin Zajaczkowski Date: Tue, 5 Jul 2016 12:03:52 +0200 Subject: [PATCH] Fix compatibility with Mockito 2.0 Update MockDefinition to only call `Answers.get()` if a direct cast isn't possible. This provides compatibility with Mockito 2.0 (currently 2.0.47-beta) without breaking support for Mockto 1.x. Closes gh-6323 --- .../boot/test/mock/mockito/MockDefinition.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockDefinition.java b/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockDefinition.java index e54f5fdb28..75f00f2d00 100644 --- a/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockDefinition.java +++ b/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockDefinition.java @@ -24,6 +24,7 @@ import java.util.Set; import org.mockito.Answers; import org.mockito.MockSettings; import org.mockito.Mockito; +import org.mockito.stubbing.Answer; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; @@ -151,11 +152,19 @@ class MockDefinition extends Definition { if (!this.extraInterfaces.isEmpty()) { settings.extraInterfaces(this.extraInterfaces.toArray(new Class[] {})); } - settings.defaultAnswer(this.answer.get()); + settings.defaultAnswer(getAnswer(this.answer)); if (this.serializable) { settings.serializable(); } return (T) Mockito.mock(this.classToMock, settings); } + private Answer getAnswer(Answers answer) { + if (Answer.class.isInstance(answer)) { + // With Mockito 2.0 we can directly cast the answer + return (Answer) ((Object) answer); + } + return answer.get(); + } + }