Skip to content

Commit c47430d

Browse files
committedJan 25, 2024
Merge branch '3.1.x' into 3.2.x
2 parents 36b70d7 + df755db commit c47430d

File tree

2 files changed

+127
-1
lines changed

2 files changed

+127
-1
lines changed
 

Diff for: ‎spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockitoTestExecutionListener.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,10 @@ public void prepareTestInstance(TestContext testContext) throws Exception {
6464
}
6565

6666
@Override
67-
public void beforeTestMethod(TestContext testContext) {
67+
public void beforeTestMethod(TestContext testContext) throws Exception {
6868
if (Boolean.TRUE.equals(
6969
testContext.getAttribute(DependencyInjectionTestExecutionListener.REINJECT_DEPENDENCIES_ATTRIBUTE))) {
70+
closeMocks(testContext);
7071
initMocks(testContext);
7172
reinjectFields(testContext);
7273
}
@@ -77,6 +78,11 @@ public void afterTestMethod(TestContext testContext) throws Exception {
7778
closeMocks(testContext);
7879
}
7980

81+
@Override
82+
public void afterTestClass(TestContext testContext) throws Exception {
83+
closeMocks(testContext);
84+
}
85+
8086
private void initMocks(TestContext testContext) {
8187
if (hasMockitoAnnotations(testContext)) {
8288
testContext.setAttribute(MOCKS_ATTRIBUTE_NAME, MockitoAnnotations.openMocks(testContext.getTestInstance()));

Diff for: ‎spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/mock/mockito/MockitoTestExecutionListenerIntegrationTests.java

+120
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121

2222
import org.junit.jupiter.api.BeforeAll;
2323
import org.junit.jupiter.api.BeforeEach;
24+
import org.junit.jupiter.api.ClassOrderer;
2425
import org.junit.jupiter.api.Disabled;
2526
import org.junit.jupiter.api.MethodOrderer;
2627
import org.junit.jupiter.api.Nested;
2728
import org.junit.jupiter.api.Order;
2829
import org.junit.jupiter.api.Test;
30+
import org.junit.jupiter.api.TestClassOrder;
2931
import org.junit.jupiter.api.TestInstance;
3032
import org.junit.jupiter.api.TestInstance.Lifecycle;
3133
import org.junit.jupiter.api.TestMethodOrder;
@@ -36,6 +38,8 @@
3638
import org.springframework.boot.test.context.TestConfiguration;
3739
import org.springframework.context.annotation.Bean;
3840
import org.springframework.context.annotation.Import;
41+
import org.springframework.test.annotation.DirtiesContext;
42+
import org.springframework.test.annotation.DirtiesContext.ClassMode;
3943
import org.springframework.test.context.junit.jupiter.SpringExtension;
4044

4145
import static org.assertj.core.api.Assertions.assertThat;
@@ -77,6 +81,122 @@ void shouldNotFailBecauseOfMockedStaticNotBeingClosed() {
7781

7882
}
7983

84+
@Nested
85+
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
86+
@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD)
87+
class MockedStaticTestsDirtiesContext {
88+
89+
private static final UUID uuid = UUID.randomUUID();
90+
91+
@Mock
92+
private MockedStatic<UUID> mockedStatic;
93+
94+
@Test
95+
@Order(1)
96+
@Disabled
97+
void shouldReturnConstantValueDisabled() {
98+
this.mockedStatic.when(UUID::randomUUID).thenReturn(uuid);
99+
UUID result = UUID.randomUUID();
100+
assertThat(result).isEqualTo(uuid);
101+
}
102+
103+
@Test
104+
@Order(2)
105+
void shouldNotFailBecauseOfMockedStaticNotBeingClosed() {
106+
this.mockedStatic.when(UUID::randomUUID).thenReturn(uuid);
107+
UUID result = UUID.randomUUID();
108+
assertThat(result).isEqualTo(uuid);
109+
}
110+
111+
@Test
112+
@Order(3)
113+
void shouldNotFailBecauseOfMockedStaticNotBeingClosedWhenMocksAreReinjected() {
114+
this.mockedStatic.when(UUID::randomUUID).thenReturn(uuid);
115+
UUID result = UUID.randomUUID();
116+
assertThat(result).isEqualTo(uuid);
117+
}
118+
119+
}
120+
121+
@Nested
122+
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
123+
@TestClassOrder(ClassOrderer.OrderAnnotation.class)
124+
class MockedStaticTestsIfClassContainsOnlyDisabledTests {
125+
126+
@Nested
127+
@Order(1)
128+
class TestClass1 {
129+
130+
private static final UUID uuid = UUID.randomUUID();
131+
132+
@Mock
133+
private MockedStatic<UUID> mockedStatic;
134+
135+
@Test
136+
@Order(1)
137+
@Disabled
138+
void disabledTest() {
139+
this.mockedStatic.when(UUID::randomUUID).thenReturn(uuid);
140+
}
141+
142+
}
143+
144+
@Nested
145+
@Order(2)
146+
class TestClass2 {
147+
148+
private static final UUID uuid = UUID.randomUUID();
149+
150+
@Mock
151+
private MockedStatic<UUID> mockedStatic;
152+
153+
@Test
154+
@Order(1)
155+
void shouldNotFailBecauseMockedStaticHasNotBeenClosed() {
156+
this.mockedStatic.when(UUID::randomUUID).thenReturn(uuid);
157+
UUID result = UUID.randomUUID();
158+
assertThat(result).isEqualTo(uuid);
159+
}
160+
161+
}
162+
163+
}
164+
165+
@Nested
166+
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
167+
@TestClassOrder(ClassOrderer.OrderAnnotation.class)
168+
class MockedStaticTestsIfClassContainsNoTests {
169+
170+
@Nested
171+
@Order(1)
172+
class TestClass1 {
173+
174+
@Mock
175+
private MockedStatic<UUID> mockedStatic;
176+
177+
}
178+
179+
@Nested
180+
@Order(2)
181+
class TestClass2 {
182+
183+
private static final UUID uuid = UUID.randomUUID();
184+
185+
@Mock
186+
private MockedStatic<UUID> mockedStatic;
187+
188+
@Test
189+
@Order(1)
190+
void shouldNotFailBecauseMockedStaticHasNotBeenClosed() {
191+
this.mockedStatic.when(UUID::randomUUID).thenReturn(uuid);
192+
UUID result = UUID.randomUUID();
193+
assertThat(result).isEqualTo(uuid);
194+
}
195+
196+
}
197+
198+
}
199+
80200
@Nested
81201
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
82202
class ConfigureMockInBeforeEach {

0 commit comments

Comments
 (0)
Please sign in to comment.