Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not pass static mocks to regular listener callback. #1989

Merged
merged 1 commit into from Jul 29, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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));
}
}