Upgrading org.mockito:mockito-core 4 to 5
Breaking4.11.0 → 5.24.0Breaking3Platform1New32Changed260Fixed64Other81
BreakingUpgrade verdict
3 breaking changes and a platform requirement change.
In plain terms
- Removes mockito-inline as a subproject and as an actual subproject.
- Existing code keeps compiling, but compiled classes may need to be rebuilt against Mockito 5.
- If you run Mockito tests on Android, your test device or emulator must now run Android 9 (API 28) or newer.
- Mockito 5 needs Java 11 or newer. If you are still on Java 8, keep using Mockito 4.
Must act 4 items need code or config changes
What you must change
Breaking3
Removes mockito-inline as a subproject and as an actual subproject.
mockito-inlineMakes the new ArgumentMatcher.type() method a bytecode-breaking change, though not source-breaking; Mockito 4 code works when recompiled with Mockito 5.
ArgumentMatcherArgumentMatcher.type()mockito-android tests now require a device or emulator based on API 28+ (Android P) to enable mocking Kotlin classes.
mockito-androidPlatform1
Raises the minimum supported Java version to 11; Mockito 4 remains available for JDK 8 and below.
API changes
Generated by DepDelta from published JVM bytecode. Not mixed with prose notes.
- added:
interface MockedSingleton extends ScopedMock - added:
interface ThrowingConsumer extends Consumer - added:
method Mock.withoutAnnotations(): boolean - added:
method MockSettings.genericTypeToMock(Type): MockSettings - added:
method MockedSingleton.getInstance(): Object - added:
method Spy.mockMaker(): String - added:
method ThrowingConsumer.accept(Object): void - added:
method ThrowingConsumer.acceptThrows(Object): void - added:
static method ArgumentCaptor.captor(Object[]): ArgumentCaptor - added:
static method ArgumentMatchers.assertArg(Consumer): Object - added:
static method ArgumentMatchers.assertArg(ThrowingConsumer): Object - added:
static method Mockito.mock(Answer, Object[]): Object - added:
static method Mockito.mock(MockSettings, Object[]): Object - added:
static method Mockito.mock(String, Object[]): Object - added:
static method Mockito.mockConstruction(Function, MockedConstruction.MockInitializer, Object[]): MockedConstruction - added:
static method Mockito.mockConstruction(Function, Object[]): MockedConstruction - added:
static method Mockito.mockConstruction(MockSettings, MockedConstruction.MockInitializer, Object[]): MockedConstruction - added:
static method Mockito.mockConstruction(MockSettings, Object[]): MockedConstruction - added:
static method Mockito.mockConstruction(MockedConstruction.MockInitializer, Object[]): MockedConstruction - added:
static method Mockito.mockConstruction(Object[]): MockedConstruction - added:
static method Mockito.mockSingleton(Object): MockedSingleton - added:
static method Mockito.mockSingleton(Object, MockSettings): MockedSingleton - added:
static method Mockito.mockStatic(Answer, Object[]): MockedStatic - added:
static method Mockito.mockStatic(MockSettings, Object[]): MockedStatic - added:
static method Mockito.mockStatic(Object[]): MockedStatic - added:
static method Mockito.mockStatic(String, Object[]): MockedStatic - added:
static method Mockito.spyStatic(Class): MockedStatic - added:
static method Mockito.spyStatic(Class, MockSettings): MockedStatic - added:
static method Mockito.spyStatic(Class, String): MockedStatic - added:
static method Mockito.spyStatic(MockSettings, Object[]): MockedStatic - added:
static method Mockito.spyStatic(Object[]): MockedStatic - added:
static method Mockito.spyStatic(String, Object[]): MockedStatic
- removed:
class InjectionBase
- added:
class DisabledMockException extends MockitoException - added:
ctor DisabledMockException()
- added:
static method MockitoHamcrest.argThat(Matcher, Class): Object
- removed:
method MockedConstructionImpl.close(): void - removed:
method MockedConstructionImpl.closeOnDemand(): void - removed:
method MockedConstructionImpl.isClosed(): boolean - removed:
method MockedStaticImpl.close(): void - removed:
method MockedStaticImpl.closeOnDemand(): void - removed:
method MockedStaticImpl.isClosed(): boolean - changed:
final class MockedConstructionImpl implements MockedConstruction → final class MockedConstructionImpl extends ScopedMockImpl implements MockedConstruction - changed:
final class MockedStaticImpl implements MockedStatic → final class MockedStaticImpl extends ScopedMockImpl implements MockedStatic - added:
class PremainAttach - added:
class PremainAttachAccess - added:
class ScopedMockImpl implements ScopedMock - added:
ctor MockedSingletonImpl(MockMaker.SingletonMockControl) - added:
ctor PremainAttach() - added:
ctor PremainAttachAccess() - added:
ctor ScopedMockImpl(MockMaker.ScopedMockControl) - added:
field ScopedMockImpl.control: MockMaker.ScopedMockControl - added:
final class MockedSingletonImpl extends ScopedMockImpl implements MockedSingleton - added:
method MockedSingletonImpl.getInstance(): Object - added:
method MockedSingletonImpl.toString(): String - added:
method MockitoCore.mockSingleton(Object, MockSettings): MockedSingleton - added:
method ScopedMockImpl.assertNotClosed(): void - added:
method ScopedMockImpl.close(): void - added:
method ScopedMockImpl.closeOnDemand(): void - added:
method ScopedMockImpl.isClosed(): boolean - added:
static method PremainAttach.getInstrumentation(): Instrumentation - added:
static method PremainAttach.premain(String, Instrumentation): void - added:
static method PremainAttachAccess.getInstrumentation(): Instrumentation
- added:
final class SpyAnnotationUtil - added:
static method CaptorAnnotationProcessor.process(Parameter): Object - added:
static method SpyAnnotationUtil.resetOrCreateSpy(Field, Object, MemberAccessor, Object): void
- changed:
method MockCandidateFilter.filterCandidate(Collection, Field, List, Object): OngoingInjector → method MockCandidateFilter.filterCandidate(Collection, Field, List, Object, Field): OngoingInjector - changed:
method NameBasedCandidateFilter.filterCandidate(Collection, Field, List, Object): OngoingInjector → method NameBasedCandidateFilter.filterCandidate(Collection, Field, List, Object, Field): OngoingInjector - changed:
method TerminalMockCandidateFilter.filterCandidate(Collection, Field, List, Object): OngoingInjector → method TerminalMockCandidateFilter.filterCandidate(Collection, Field, List, Object, Field): OngoingInjector - changed:
method TypeBasedCandidateFilter.filterCandidate(Collection, Field, List, Object): OngoingInjector → method TypeBasedCandidateFilter.filterCandidate(Collection, Field, List, Object, Field): OngoingInjector - added:
method TypeBasedCandidateFilter.isCompatibleTypes(Type, Type, Field): boolean
- changed:
static method Plugins.getDoNotMockEnforcer(): DoNotMockEnforcer → static method Plugins.getDoNotMockEnforcer(): DoNotMockEnforcerWithType - added:
method DefaultMockitoPlugins.getMockMaker(String): MockMaker - added:
static field DefaultMockitoPlugins.MEMBER_ACCESSOR_ALIASES: Set
- added:
method MockSettingsImpl.genericTypeToMock(Type): MockSettings
- removed:
class MockMethodInterceptor implements Serializable - removed:
ctor MockMethodInterceptor(MockHandler, MockCreationSettings) - removed:
ctor MockMethodInterceptor.DispatcherDefaultingToRealMethod() - removed:
ctor MockMethodInterceptor.ForEquals() - removed:
interface MockAccess - removed:
interface SubclassLoader - removed:
method MockAccess.getMockitoInterceptor(): MockMethodInterceptor - removed:
method MockAccess.setMockitoInterceptor(MockMethodInterceptor): void - removed:
method MockMethodInterceptor.getMockHandler(): MockHandler - removed:
method MockMethodInterceptor.getSerializationSupport(): ByteBuddyCrossClassLoaderSerializationSupport - removed:
method SubclassLoader.isDisrespectingOpenness(): boolean - removed:
method SubclassLoader.resolveStrategy(Class, ClassLoader, boolean): ClassLoadingStrategy - removed:
static class MockMethodInterceptor.DispatcherDefaultingToRealMethod - removed:
static class MockMethodInterceptor.ForEquals - removed:
static final class MockMethodInterceptor.ForHashCode - removed:
static final class MockMethodInterceptor.ForWriteReplace - removed:
static method MockMethodInterceptor.DispatcherDefaultingToRealMethod.interceptAbstract(Object, MockMethodInterceptor, Object, Method, Object[]): Object - removed:
static method MockMethodInterceptor.DispatcherDefaultingToRealMethod.interceptSuperCallable(Object, MockMethodInterceptor, Method, Object[], Callable): Object - removed:
static method MockMethodInterceptor.ForEquals.doIdentityEquals(Object, Object): boolean - removed:
static method MockMethodInterceptor.ForHashCode.doIdentityHashCode(Object): int - removed:
static method MockMethodInterceptor.ForWriteReplace.doWriteReplace(MockAccess): Object - changed:
ctor InlineBytecodeGenerator(Instrumentation, WeakConcurrentMap, DetachedThreadLocal, Predicate, ConstructionCallback) → ctor InlineBytecodeGenerator(Instrumentation, WeakConcurrentMap, DetachedThreadLocal, DetachedThreadLocal, Predicate, ConstructionCallback) - changed:
ctor MockMethodAdvice(WeakConcurrentMap, DetachedThreadLocal, String, Predicate, ConstructionCallback) → ctor MockMethodAdvice(WeakConcurrentMap, DetachedThreadLocal, DetachedThreadLocal, String, Predicate, ConstructionCallback) - changed:
ctor SubclassByteBuddyMockMaker(SubclassLoader) → ctor SubclassByteBuddyMockMaker(ModuleHandler) - added:
abstract class ModuleHandler - added:
class ByteBuddyCrossClassLoaderSerializationSupport implements Serializable - added:
class ClinitSuppressionTransformer implements ClassFileTransformer - added:
ctor ByteBuddyCrossClassLoaderSerializationSupport() - added:
ctor ByteBuddyCrossClassLoaderSerializationSupport.CrossClassLoaderSerializationProxy(Object) - added:
ctor ByteBuddyCrossClassLoaderSerializationSupport.MockitoMockObjectInputStream(InputStream, Class, Set) - added:
ctor ClinitSuppressionTransformer(Predicate) - added:
ctor ModuleHandler() - added:
ctor ModuleHandler.NoModuleSystemFound() - added:
interface ByteBuddyCrossClassLoaderSerializationSupport.CrossClassLoaderSerializableMock - added:
method ByteBuddyCrossClassLoaderSerializationSupport.CrossClassLoaderSerializableMock.writeReplace(): Object - added:
method ByteBuddyCrossClassLoaderSerializationSupport.MockitoMockObjectInputStream.resolveClass(ObjectStreamClass): Class - added:
method ByteBuddyCrossClassLoaderSerializationSupport.writeReplace(Object): Object - added:
method ClinitSuppressionTransformer.transform(ClassLoader, String, Class, ProtectionDomain, byte[]): byte[] - added:
method InlineByteBuddyMockMaker.createSingletonMock(Object, MockCreationSettings, MockHandler): MockMaker.SingletonMockControl - added:
method ModuleHandler.classLoadingStrategy(): ClassLoadingStrategy - added:
static abstract class ModuleHandler.NoModuleSystemFound extends ModuleHandler - added:
static class ByteBuddyCrossClassLoaderSerializationSupport.CrossClassLoaderSerializationProxy implements Serializable - added:
static class ByteBuddyCrossClassLoaderSerializationSupport.MockitoMockObjectInputStream extends ObjectInputStream
- added:
class MockMethodInterceptor implements Serializable - added:
ctor MockMethodInterceptor(MockHandler, MockCreationSettings) - added:
ctor MockMethodInterceptor.DispatcherDefaultingToRealMethod() - added:
ctor MockMethodInterceptor.ForEquals() - added:
interface MockAccess - added:
method MockAccess.getMockitoInterceptor(): MockMethodInterceptor - added:
method MockAccess.setMockitoInterceptor(MockMethodInterceptor): void - added:
method MockMethodInterceptor.doIntercept(Object, Method, Object[], RealMethod, Location): Object - added:
method MockMethodInterceptor.getMockHandler(): MockHandler - added:
method MockMethodInterceptor.getSerializationSupport(): ByteBuddyCrossClassLoaderSerializationSupport - added:
static class MockMethodInterceptor.DispatcherDefaultingToRealMethod - added:
static class MockMethodInterceptor.ForEquals - added:
static final class MockMethodInterceptor.ForHashCode - added:
static final class MockMethodInterceptor.ForWriteReplace - added:
static method MockMethodInterceptor.DispatcherDefaultingToRealMethod.interceptAbstract(Object, MockMethodInterceptor, Object, Method, Object[]): Object - added:
static method MockMethodInterceptor.DispatcherDefaultingToRealMethod.interceptSuperCallable(Object, MockMethodInterceptor, Method, Object[], Callable): Object - added:
static method MockMethodInterceptor.ForEquals.doIdentityEquals(Object, Object): boolean - added:
static method MockMethodInterceptor.ForHashCode.doIdentityHashCode(Object): int - added:
static method MockMethodInterceptor.ForWriteReplace.doWriteReplace(MockAccess): Object
- added:
class InjectionBase
- added:
field CreationSettings.genericTypeToMock: Type - added:
field CreationSettings.mockType: MockType - added:
method CreationSettings.getGenericTypeToMock(): Type - added:
method CreationSettings.getMockType(): MockType - added:
method CreationSettings.setGenericTypeToMock(Type): CreationSettings - added:
method CreationSettings.setMockType(MockType): void
- changed:
static method Reporter.argumentsAreDifferent(String, List, List): AssertionError → static method Reporter.argumentsAreDifferent(Invocation, MatchableInvocation, String, List, List): AssertionError - added:
static method Reporter.moreThanOneMockCandidate(Field, Collection): MockitoException
- added:
class DisabledMockHandler implements MockHandler - added:
method DisabledMockHandler.getInvocationContainer(): InvocationContainer - added:
method DisabledMockHandler.getMockSettings(): MockCreationSettings - added:
method DisabledMockHandler.handle(Invocation): Object - added:
static field DisabledMockHandler.HANDLER: MockHandler
- removed:
method HamcrestArgumentMatcher.isVarargMatcher(): boolean - added:
ctor HamcrestArgumentMatcher(Matcher, Class) - added:
method HamcrestArgumentMatcher.type(): Class
- removed:
ctor InstanceOf.VarArgAware(Class) - removed:
ctor InstanceOf.VarArgAware(Class, String) - removed:
interface VarargMatcher extends Serializable - removed:
method InstanceOf.VarArgAware.type(): Class - removed:
static class InstanceOf.VarArgAware extends InstanceOf implements VarargMatcher - changed:
class Any implements ArgumentMatcher, VarargMatcher, Serializable → class Any implements ArgumentMatcher, Serializable - changed:
class CapturingMatcher implements ArgumentMatcher, CapturesArguments, VarargMatcher, Serializable → class CapturingMatcher implements ArgumentMatcher, CapturesArguments, Serializable
- added:
method MockingProgress.singletonMockingStarted(Object, MockCreationSettings): void - added:
method MockingProgressImpl.singletonMockingStarted(Object, MockCreationSettings): void
- removed:
method InvocationContainerImpl.getStubbingsDescending(): List
- removed:
final class JavaEightUtil - removed:
static method JavaEightUtil.emptyDoubleStream(): Object - removed:
static method JavaEightUtil.emptyDuration(): Object - removed:
static method JavaEightUtil.emptyIntStream(): Object - removed:
static method JavaEightUtil.emptyLongStream(): Object - removed:
static method JavaEightUtil.emptyOptional(): Object - removed:
static method JavaEightUtil.emptyOptionalDouble(): Object - removed:
static method JavaEightUtil.emptyOptionalInt(): Object - removed:
static method JavaEightUtil.emptyOptionalLong(): Object - removed:
static method JavaEightUtil.emptyPeriod(): Object - removed:
static method JavaEightUtil.emptyStream(): Object - removed:
static method Platform.isAndroidMockMakerRequired(): boolean - removed:
static method Platform.isJava8BelowUpdate45(): boolean - changed:
ctor MockNameImpl(String, Class, boolean) → ctor MockNameImpl(String, Class, MockType) - added:
class AndroidPlatform - added:
ctor AndroidPlatform() - added:
method ConsoleMockitoLogger.warn(Object): void - added:
static method AndroidPlatform.isStackWalkerUsable(): boolean - added:
static method MockUtil.createSingletonMock(Object, MockCreationSettings): MockMaker.SingletonMockControl - added:
static method MockUtil.getMockMaker(String): MockMaker - added:
static method Primitives.getPrimitiveDescriptor(Class): char
- added:
class WeakIdentityMap extends AbstractMap - added:
ctor WeakIdentityMap() - added:
method WeakIdentityMap.containsKey(Object): boolean - added:
method WeakIdentityMap.entrySet(): Set - added:
method WeakIdentityMap.get(Object): Object - added:
method WeakIdentityMap.put(Object, Object): Object - added:
method WeakIdentityMap.remove(Object): Object - added:
method WeakIdentityMap.size(): int
- added:
method GenericMaster.getGenericType(Parameter): Class
- added:
static method ArgumentMatchingTool.getNotMatchingArgsIndexes(List, Object[]): List
- added:
method MockCreationListener.onSingletonMockCreated(Object, MockCreationSettings): void
- added:
enum MockType - added:
method MockCreationSettings.getGenericTypeToMock(): Type - added:
method MockCreationSettings.getMockType(): MockType - added:
static field MockType.INSTANCE: MockType - added:
static field MockType.STATIC: MockType - added:
static method MockType.valueOf(String): MockType - added:
static method MockType.values(): MockType[]
- removed:
method MockMaker.ConstructionMockControl.disable(): void - removed:
method MockMaker.ConstructionMockControl.enable(): void - removed:
method MockMaker.StaticMockControl.disable(): void - removed:
method MockMaker.StaticMockControl.enable(): void - changed:
interface DoNotMockEnforcer → interface DoNotMockEnforcer extends DoNotMockEnforcerWithType - changed:
interface MockMaker.ConstructionMockControl → interface MockMaker.ConstructionMockControl extends MockMaker.ScopedMockControl - changed:
interface MockMaker.StaticMockControl → interface MockMaker.StaticMockControl extends MockMaker.ScopedMockControl - added:
ctor DoNotMockEnforcer.Cache() - added:
interface DoNotMockEnforcerWithType - added:
interface MockMaker.ScopedMockControl - added:
interface MockMaker.SingletonMockControl extends MockMaker.ScopedMockControl - added:
method DoNotMockEnforcer.checkTypeForDoNotMockViolation(MockCreationSettings): String - added:
method DoNotMockEnforcerWithType.checkTypeForDoNotMockViolation(MockCreationSettings): String - added:
method MockMaker.ScopedMockControl.disable(): void - added:
method MockMaker.ScopedMockControl.enable(): void - added:
method MockMaker.SingletonMockControl.getInstance(): Object - added:
method MockMaker.createSingletonMock(Object, MockCreationSettings, MockHandler): MockMaker.SingletonMockControl - added:
method MockitoLogger.warn(Object): void - added:
method MockitoPlugins.getMockMaker(String): MockMaker - added:
static class DoNotMockEnforcer.Cache