Skip to content

Commit 36653b0

Browse files
committed
Prevent simultaneous use of @InjectMock and @InjectSpy
Closes: #50163
1 parent 6c34fd7 commit 36653b0

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

integration-tests/rest-client-reactive/src/test/java/io/quarkus/it/rest/client/InjectMockTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@
1313
import io.quarkus.it.rest.client.main.MyResponseExceptionMapper;
1414
import io.quarkus.test.InjectMock;
1515
import io.quarkus.test.junit.QuarkusTest;
16+
import io.quarkus.test.junit.mockito.InjectSpy;
1617
import io.restassured.RestAssured;
1718

1819
@QuarkusTest
1920
@Order(100) // used in order to make sure this is run before ShouldNotUseMockTest
2021
public class InjectMockTest {
2122

2223
@InjectMock
24+
@InjectSpy
2325
@RestClient
2426
ClientWithExceptionMapper mock;
2527

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.quarkus.arc.ClientProxy;
1313
import io.quarkus.arc.InjectableContext;
1414
import io.quarkus.arc.InstanceHandle;
15+
import io.quarkus.test.InjectMock;
1516
import io.quarkus.test.junit.callback.QuarkusTestAfterAllCallback;
1617
import io.quarkus.test.junit.callback.QuarkusTestAfterConstructCallback;
1718
import io.quarkus.test.junit.callback.QuarkusTestContext;
@@ -35,6 +36,12 @@ public void afterConstruct(Object testInstance) {
3536
while (current.getSuperclass() != null) {
3637
for (Field field : current.getDeclaredFields()) {
3738
InjectSpy injectSpyAnnotation = field.getAnnotation(InjectSpy.class);
39+
InjectMock injectMockAnnotation = field.getAnnotation(InjectMock.class);
40+
if (injectMockAnnotation != null) {
41+
throw new IllegalArgumentException(
42+
"Fields cannot be annotated with both @InjectSpy and @InjectMock. Offending field is '"
43+
+ field.getDeclaringClass().getName() + "#" + field.getName() + "'");
44+
}
3845
if (injectSpyAnnotation != null) {
3946
InstanceHandle<?> beanHandle = CreateMockitoMocksCallback.getBeanHandle(testInstance, field,
4047
InjectSpy.class);

0 commit comments

Comments
 (0)