Skip to content

Commit

Permalink
[ci maven-central-release] Merge pull request #1989 from mockito/list…
Browse files Browse the repository at this point in the history
…ener-fix

Do not pass static mocks to regular listener callback.
  • Loading branch information
raphw committed Jul 29, 2020
2 parents 0c56b3a + 724619b commit 4767db1
Show file tree
Hide file tree
Showing 7 changed files with 102 additions and 6 deletions.
Expand Up @@ -141,6 +141,30 @@ public Object callRealMethod() throws Throwable {
return realMethod.invoke();
}

/**
* @deprecated Not used by Mockito but by mockito-scala
*/
@Deprecated
public MockReference<Object> getMockRef() {
return mockRef;
}

/**
* @deprecated Not used by Mockito but by mockito-scala
*/
@Deprecated
public MockitoMethod getMockitoMethod() {
return mockitoMethod;
}

/**
* @deprecated Not used by Mockito but by mockito-scala
*/
@Deprecated
public RealMethod getRealMethod() {
return realMethod;
}

@Override
public int hashCode() {
// TODO SF we need to provide hash code implementation so that there are no unexpected,
Expand Down
Expand Up @@ -43,6 +43,8 @@ public interface MockingProgress {

void mockingStarted(Object mock, MockCreationSettings settings);

void mockingStarted(Class<?> mock, MockCreationSettings settings);

void addListener(MockitoListener listener);

void removeListener(MockitoListener listener);
Expand Down
Expand Up @@ -159,6 +159,15 @@ public void mockingStarted(Object mock, MockCreationSettings settings) {
validateMostStuff();
}

public void mockingStarted(Class<?> mock, MockCreationSettings settings) {
for (MockitoListener listener : listeners) {
if (listener instanceof MockCreationListener) {
((MockCreationListener) listener).onStaticMockCreated(mock, settings);
}
}
validateMostStuff();
}

public void addListener(MockitoListener listener) {
addListener(listener, listeners);
}
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/org/mockito/listeners/MockCreationListener.java
Expand Up @@ -19,4 +19,12 @@ public interface MockCreationListener extends MockitoListener {
* @param settings the settings used for creation
*/
void onMockCreated(Object mock, MockCreationSettings settings);

/**
* Static mock object was just created.
*
* @param mock the type being mocked
* @param settings the settings used for creation
*/
default void onStaticMockCreated(Class<?> mock, MockCreationSettings settings) {}
}
Expand Up @@ -11,21 +11,15 @@

import java.util.concurrent.atomic.AtomicReference;

import org.junit.Rule;
import org.junit.Test;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import org.mockito.exceptions.base.MockitoException;
import org.mockito.exceptions.verification.NoInteractionsWanted;
import org.mockito.exceptions.verification.WantedButNotInvoked;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;

public final class StaticMockTest {

@Rule // Adding rule to assert properly managed life-cycle for static mocks
public MockitoRule mockitoRule = MockitoJUnit.rule();

@Test
public void testStaticMockSimple() {
assertEquals("foo", Dummy.foo());
Expand Down
@@ -0,0 +1,31 @@
/*
* Copyright (c) 2018 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockitoinline;

import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;

import java.util.UUID;

import static junit.framework.TestCase.assertEquals;

public final class StaticRuleTest {

@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();

@Mock
private MockedStatic<UUID> mock;

@Test
public void runs() {
mock.when(UUID::randomUUID).thenReturn(new UUID(123, 456));
assertEquals(UUID.randomUUID(), new UUID(123, 456));
}
}
@@ -0,0 +1,28 @@
/*
* Copyright (c) 2018 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockitoinline;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.mockito.junit.MockitoJUnitRunner;

import java.util.UUID;

import static junit.framework.TestCase.assertEquals;

@RunWith(MockitoJUnitRunner.class)
public final class StaticRunnerTest {

@Mock
private MockedStatic<UUID> mock;

@Test
public void runs() {
mock.when(UUID::randomUUID).thenReturn(new UUID(123, 456));
assertEquals(UUID.randomUUID(), new UUID(123, 456));
}
}

0 comments on commit 4767db1

Please sign in to comment.