Merge branch '3.2.x'

This commit is contained in:
Moritz Halbritter 2024-01-25 10:19:49 +01:00
commit 9146ce5515

View File

@ -16,21 +16,30 @@
package org.springframework.boot.test.mock.mockito;
import java.util.List;
import java.util.UUID;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.given;
/**
* Integration tests for {@link MockitoTestExecutionListener}.
@ -42,7 +51,7 @@ class MockitoTestExecutionListenerIntegrationTests {
@Nested
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class DisabledTests {
class MockedStaticTests {
private static final UUID uuid = UUID.randomUUID();
@ -60,7 +69,7 @@ class MockitoTestExecutionListenerIntegrationTests {
@Test
@Order(2)
void shouldReturnConstantValue() {
void shouldNotFailBecauseOfMockedStaticNotBeingClosed() {
this.mockedStatic.when(UUID::randomUUID).thenReturn(uuid);
UUID result = UUID.randomUUID();
assertThat(result).isEqualTo(uuid);
@ -68,4 +77,303 @@ class MockitoTestExecutionListenerIntegrationTests {
}
@Nested
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class ConfigureMockInBeforeEach {
@Mock
private List<String> mock;
@BeforeEach
void setUp() {
given(this.mock.size()).willReturn(1);
}
@Test
@Order(1)
void shouldUseSetUpConfiguration() {
assertThat(this.mock.size()).isEqualTo(1);
}
@Test
@Order(2)
void shouldBeAbleToReconfigureMock() {
given(this.mock.size()).willReturn(2);
assertThat(this.mock.size()).isEqualTo(2);
}
@Test
@Order(3)
void shouldNotBeAffectedByOtherTests() {
assertThat(this.mock.size()).isEqualTo(1);
}
}
@Nested
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@TestInstance(Lifecycle.PER_CLASS)
class ConfigureMockInBeforeAll {
@Mock
private List<String> mock;
@BeforeAll
void setUp() {
given(this.mock.size()).willReturn(1);
}
@Test
@Order(1)
void shouldUseSetUpConfiguration() {
assertThat(this.mock.size()).isEqualTo(1);
}
@Test
@Order(2)
void shouldBeAbleToReconfigureMock() {
given(this.mock.size()).willReturn(2);
assertThat(this.mock.size()).isEqualTo(2);
}
@Test
@Order(3)
void shouldNotBeAffectedByOtherTest() {
assertThat(this.mock.size()).isEqualTo(2);
}
}
@Nested
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@Import(MyBeanConfiguration.class)
class ConfigureMockBeanWithResetAfterInBeforeEach {
@MockBean(reset = MockReset.AFTER)
private MyBean mock;
@BeforeEach
void setUp() {
given(this.mock.call()).willReturn(1);
}
@Test
@Order(1)
void shouldUseSetUpConfiguration() {
assertThat(this.mock.call()).isEqualTo(1);
}
@Test
@Order(2)
void shouldBeAbleToReconfigureMock() {
given(this.mock.call()).willReturn(2);
assertThat(this.mock.call()).isEqualTo(2);
}
@Test
@Order(3)
void shouldNotBeAffectedByOtherTests() {
assertThat(this.mock.call()).isEqualTo(1);
}
}
@Nested
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@Import(MyBeanConfiguration.class)
class ConfigureMockBeanWithResetBeforeInBeforeEach {
@MockBean(reset = MockReset.BEFORE)
private MyBean mock;
@BeforeEach
void setUp() {
given(this.mock.call()).willReturn(1);
}
@Test
@Order(1)
void shouldUseSetUpConfiguration() {
assertThat(this.mock.call()).isEqualTo(1);
}
@Test
@Order(2)
void shouldBeAbleToReconfigureMock() {
given(this.mock.call()).willReturn(2);
assertThat(this.mock.call()).isEqualTo(2);
}
@Test
@Order(3)
void shouldNotBeAffectedByOtherTests() {
assertThat(this.mock.call()).isEqualTo(1);
}
}
@Nested
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@Import(MyBeanConfiguration.class)
class ConfigureMockBeanWithResetNoneInBeforeEach {
@MockBean(reset = MockReset.NONE)
private MyBean mock;
@BeforeEach
void setUp() {
given(this.mock.call()).willReturn(1);
}
@Test
@Order(1)
void shouldUseSetUpConfiguration() {
assertThat(this.mock.call()).isEqualTo(1);
}
@Test
@Order(2)
void shouldBeAbleToReconfigureMock() {
given(this.mock.call()).willReturn(2);
assertThat(this.mock.call()).isEqualTo(2);
}
@Test
@Order(3)
void shouldNotBeAffectedByOtherTests() {
assertThat(this.mock.call()).isEqualTo(1);
}
}
@Nested
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@TestInstance(Lifecycle.PER_CLASS)
@Import(MyBeanConfiguration.class)
class ConfigureMockBeanWithResetAfterInBeforeAll {
@MockBean(reset = MockReset.AFTER)
private MyBean mock;
@BeforeAll
void setUp() {
given(this.mock.call()).willReturn(1);
}
@Test
@Order(1)
void shouldUseSetUpConfiguration() {
assertThat(this.mock.call()).isEqualTo(1);
}
@Test
@Order(2)
void shouldBeAbleToReconfigureMock() {
given(this.mock.call()).willReturn(2);
assertThat(this.mock.call()).isEqualTo(2);
}
@Test
@Order(3)
void shouldResetMockAfterReconfiguration() {
assertThat(this.mock.call()).isEqualTo(0);
}
}
@Nested
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@TestInstance(Lifecycle.PER_CLASS)
@Import(MyBeanConfiguration.class)
class ConfigureMockBeanWithResetBeforeInBeforeAll {
@MockBean(reset = MockReset.BEFORE)
private MyBean mock;
@BeforeAll
void setUp() {
given(this.mock.call()).willReturn(1);
}
@Test
@Order(1)
void shouldResetMockBeforeThisMethod() {
assertThat(this.mock.call()).isEqualTo(0);
}
@Test
@Order(2)
void shouldBeAbleToReconfigureMock() {
given(this.mock.call()).willReturn(2);
assertThat(this.mock.call()).isEqualTo(2);
}
@Test
@Order(3)
void shouldResetMockAfterReconfiguration() {
assertThat(this.mock.call()).isEqualTo(0);
}
}
@Nested
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@TestInstance(Lifecycle.PER_CLASS)
@Import(MyBeanConfiguration.class)
class ConfigureMockBeanWithResetNoneInBeforeAll {
@MockBean(reset = MockReset.NONE)
private MyBean mock;
@BeforeAll
void setUp() {
given(this.mock.call()).willReturn(1);
}
@Test
@Order(1)
void shouldUseSetUpConfiguration() {
assertThat(this.mock.call()).isEqualTo(1);
}
@Test
@Order(2)
void shouldBeAbleToReconfigureMock() {
given(this.mock.call()).willReturn(2);
assertThat(this.mock.call()).isEqualTo(2);
}
@Test
@Order(3)
void shouldNotResetMock() {
assertThat(this.mock.call()).isEqualTo(2);
}
}
interface MyBean {
int call();
}
private static final class DefaultMyBean implements MyBean {
@Override
public int call() {
return -1;
}
}
@TestConfiguration(proxyBeanMethods = false)
private static final class MyBeanConfiguration {
@Bean
MyBean myBean() {
return new DefaultMyBean();
}
}
}