From e88fe26110afd6641c464cb0e87bd898b41bf457 Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Thu, 11 Feb 2021 20:12:41 +0100 Subject: [PATCH] Add API for clearing mocks. (#2194) By clearing mocks, caches are emptied and instrumentations are reversed. --- src/main/java/org/mockito/Mockito.java | 11 +++++++++ .../org/mockito/internal/MockitoCore.java | 5 ++++ .../bytebuddy/ByteBuddyMockMaker.java | 5 ++++ .../creation/bytebuddy/BytecodeGenerator.java | 2 ++ .../bytebuddy/InlineByteBuddyMockMaker.java | 6 +++++ .../bytebuddy/InlineBytecodeGenerator.java | 23 ++++++++++++++++++ .../bytebuddy/SubclassByteBuddyMockMaker.java | 5 ++++ .../TypeCachingBytecodeGenerator.java | 18 ++++++++++++++ .../org/mockito/internal/util/MockUtil.java | 4 ++++ .../java/org/mockito/plugins/MockMaker.java | 6 +++++ .../java/org/mockito/MockitoClearTest.java | 24 +++++++++++++++++++ .../creation/AndroidByteBuddyMockMaker.java | 5 ++++ 12 files changed, 114 insertions(+) create mode 100644 src/test/java/org/mockito/MockitoClearTest.java diff --git a/src/main/java/org/mockito/Mockito.java b/src/main/java/org/mockito/Mockito.java index 9d20b43bae..336251e0ae 100644 --- a/src/main/java/org/mockito/Mockito.java +++ b/src/main/java/org/mockito/Mockito.java @@ -2461,6 +2461,17 @@ public static void reset(T... mocks) { MOCKITO_CORE.reset(mocks); } + /** + * Clears all mocks, type caches and instrumentations. + *

+ * By clearing Mockito's state, previously created mocks might begin to malfunction. This option can be used if + * Mockito's caches take up too much space or if the inline mock maker's instrumentation is causing performance + * issues in code where mocks are no longer used. Normally, you would not need to use this option. + */ + public static void clearAllCaches() { + MOCKITO_CORE.clearAllCaches(); + } + /** * Use this method in order to only clear invocations, when stubbing is non-trivial. Use-cases can be: *