diff options
-rw-r--r-- | java/com/android/modules/utils/testing/AbstractExtendedMockitoRule.java | 19 | ||||
-rw-r--r-- | javatests/com/android/modules/utils/testing/ExtendedMockitoRuleTest.java | 10 |
2 files changed, 24 insertions, 5 deletions
diff --git a/java/com/android/modules/utils/testing/AbstractExtendedMockitoRule.java b/java/com/android/modules/utils/testing/AbstractExtendedMockitoRule.java index 7a0f41b..5256d6a 100644 --- a/java/com/android/modules/utils/testing/AbstractExtendedMockitoRule.java +++ b/java/com/android/modules/utils/testing/AbstractExtendedMockitoRule.java @@ -133,8 +133,16 @@ public abstract class AbstractExtendedMockitoRule<R extends AbstractExtendedMock return Collections.unmodifiableSet(staticClasses); } - - + /** + * Gets whether the rule should clear the inline mocks after the given test. + * + * <p>By default, it returns {@code} (unless the rule was built with + * {@link AbstractBuilder#dontClearInlineMocks()}, but subclasses can override to change the + * behavior (for example, to decide based on custom annotations). + */ + protected boolean getClearInlineMethodsAtTheEnd(Description description) { + return mClearInlineMocks; + } @Override public Statement apply(Statement base, Description description) { @@ -247,12 +255,13 @@ public abstract class AbstractExtendedMockitoRule<R extends AbstractExtendedMock } } } finally { - clearInlineMocks(); + clearInlineMocks(description); } } - private void clearInlineMocks() { - if (!mClearInlineMocks) { + private void clearInlineMocks(Description description) { + boolean clearIt = getClearInlineMethodsAtTheEnd(description); + if (!clearIt) { Log.d(TAG, "NOT calling clearInlineMocks() as set on builder"); return; } diff --git a/javatests/com/android/modules/utils/testing/ExtendedMockitoRuleTest.java b/javatests/com/android/modules/utils/testing/ExtendedMockitoRuleTest.java index 6a80268..765b318 100644 --- a/javatests/com/android/modules/utils/testing/ExtendedMockitoRuleTest.java +++ b/javatests/com/android/modules/utils/testing/ExtendedMockitoRuleTest.java @@ -639,6 +639,16 @@ public final class ExtendedMockitoRuleTest { assertWithMessage("mockito framework cleared").that(mockitoFramework.called).isTrue(); } + @Test + public void testGetClearInlineMethodsAtTheEnd() throws Throwable { + assertWithMessage("getClearInlineMethodsAtTheEnd() by default") + .that(mBuilder.build().getClearInlineMethodsAtTheEnd(mDescription)).isTrue(); + assertWithMessage("getClearInlineMethodsAtTheEnd() when built with dontClearInlineMocks()") + .that(mBuilder.dontClearInlineMocks().build() + .getClearInlineMethodsAtTheEnd(mDescription)) + .isFalse(); + } + private void applyRuleOnTestThatDoesntUseExpectation(@Nullable Strictness strictness) throws Throwable { Log.d(TAG, "applyRuleOnTestThatDoesntUseExpectation(): strictness= " + strictness); |