Skip to content

Commit 8c51b8b

Browse files
gsmetDavideD
authored andcommitted
Clear inline mocks after all tests are executed
Also remove mocks from MockitoMocksTracker after the whole test is executed.
1 parent a156178 commit 8c51b8b

File tree

6 files changed

+78
-4
lines changed

6 files changed

+78
-4
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package io.quarkus.it.mockbean;
2+
3+
import static io.restassured.RestAssured.given;
4+
import static org.hamcrest.Matchers.is;
5+
6+
import org.junit.jupiter.api.Nested;
7+
import org.junit.jupiter.api.Order;
8+
import org.junit.jupiter.api.Test;
9+
import org.mockito.Mockito;
10+
11+
import io.quarkus.test.junit.QuarkusTest;
12+
import io.quarkus.test.junit.mockito.InjectSpy;
13+
14+
@QuarkusTest
15+
public class NestedSpyTest {
16+
17+
@InjectSpy
18+
MessageService messageService;
19+
20+
@Nested
21+
public class ActualTest {
22+
23+
@InjectSpy
24+
SuffixService suffixService;
25+
26+
@Test
27+
@Order(1)
28+
public void testGreet() {
29+
Mockito.when(messageService.getMessage()).thenReturn("hi");
30+
Mockito.when(suffixService.getSuffix()).thenReturn("!");
31+
32+
given()
33+
.when().get("/greeting")
34+
.then()
35+
.statusCode(200)
36+
.body(is("HI!"));
37+
}
38+
39+
@Test
40+
@Order(2)
41+
public void testGreetAgain() {
42+
Mockito.when(messageService.getMessage()).thenReturn("yolo");
43+
Mockito.when(suffixService.getSuffix()).thenReturn("!!!");
44+
45+
given()
46+
.when().get("/greeting")
47+
.then()
48+
.statusCode(200)
49+
.body(is("YOLO!!!"));
50+
}
51+
52+
@Test
53+
@Order(3)
54+
public void testNoSpy() {
55+
given()
56+
.when().get("/greeting")
57+
.then()
58+
.statusCode(200)
59+
.body(is("HELLO"));
60+
}
61+
}
62+
}

test-framework/junit5-mockito/src/main/java/io/quarkus/test/junit/mockito/internal/MockitoMocksTracker.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.util.Set;
88
import java.util.concurrent.ConcurrentHashMap;
99

10+
import org.mockito.Mockito;
1011
import org.mockito.internal.util.MockUtil;
1112

1213
final class MockitoMocksTracker {
@@ -30,6 +31,13 @@ static void reset(Object testInstance) {
3031
}
3132
}
3233

34+
static void clear(Object testInstance) {
35+
for (Mocked m : getMocks(testInstance)) {
36+
Mockito.framework().clearInlineMock(m.mock);
37+
}
38+
TEST_TO_USED_MOCKS.remove(testInstance);
39+
}
40+
3341
static Optional<Object> currentMock(Object testInstance, Object beanInstance) {
3442
Set<Mocked> mocks = getMocks(testInstance);
3543
for (Mocked mocked : mocks) {
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@
33
import io.quarkus.test.junit.callback.QuarkusTestAfterAllCallback;
44
import io.quarkus.test.junit.callback.QuarkusTestContext;
55

6-
public class ResetOuterMockitoMocksCallback implements QuarkusTestAfterAllCallback {
6+
public class ResetMockitoMocksAfterAllCallback implements QuarkusTestAfterAllCallback {
77

88
@Override
99
public void afterAll(QuarkusTestContext context) {
10+
MockitoMocksTracker.clear(context.getTestInstance());
11+
1012
if (context.getOuterInstances() != null) {
1113
for (Object outerInstance : context.getOuterInstances()) {
1214
MockitoMocksTracker.reset(outerInstance);
15+
MockitoMocksTracker.clear(outerInstance);
1316
}
1417
}
18+
1519
}
1620
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import io.quarkus.test.junit.callback.QuarkusTestAfterEachCallback;
44
import io.quarkus.test.junit.callback.QuarkusTestMethodContext;
55

6-
public class ResetMockitoMocksCallback implements QuarkusTestAfterEachCallback {
6+
public class ResetMockitoMocksAfterEachCallback implements QuarkusTestAfterEachCallback {
77

88
@Override
99
public void afterEach(QuarkusTestMethodContext context) {
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
io.quarkus.test.junit.mockito.internal.ResetOuterMockitoMocksCallback
1+
io.quarkus.test.junit.mockito.internal.ResetMockitoMocksAfterAllCallback
22
io.quarkus.test.junit.mockito.internal.CreateMockitoSpiesCallback
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
io.quarkus.test.junit.mockito.internal.ResetMockitoMocksCallback
1+
io.quarkus.test.junit.mockito.internal.ResetMockitoMocksAfterEachCallback

0 commit comments

Comments
 (0)