Skip to content

Commit 4805b0b

Browse files
authored
Ignore Spring Framework 6.2 @MockitoBean, @MockitoSpyBean fields (#1147)
Spring Framework 6.2 introduced two annotations, `@MockitoBean` and `@MockitoSpyBean`, that supersede Spring Boot's `@MockBean` and `@SpyBean`. Add these annotations to the field ignore list.
1 parent 6f4cda7 commit 4805b0b

File tree

4 files changed

+39
-1
lines changed

4 files changed

+39
-1
lines changed

nullaway/src/main/java/com/uber/nullaway/ErrorProneCLIFlagsConfig.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,9 @@ final class ErrorProneCLIFlagsConfig implements Config {
178178
"org.checkerframework.checker.nullness.qual.MonotonicNonNull",
179179
"org.springframework.beans.factory.annotation.Autowired",
180180
"org.springframework.boot.test.mock.mockito.MockBean",
181-
"org.springframework.boot.test.mock.mockito.SpyBean");
181+
"org.springframework.boot.test.mock.mockito.SpyBean",
182+
"org.springframework.test.context.bean.override.mockito.MockitoBean",
183+
"org.springframework.test.context.bean.override.mockito.MockitoSpyBean");
182184

183185
private static final String DEFAULT_URL = "http://t.uber.com/nullaway";
184186

nullaway/src/test/java/com/uber/nullaway/FrameworkTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,8 @@ public void springTestAutowiredFieldTest() {
388388
defaultCompilationHelper
389389
.addSourceFile("testdata/springboot-annotations/MockBean.java")
390390
.addSourceFile("testdata/springboot-annotations/SpyBean.java")
391+
.addSourceFile("testdata/springboot-annotations/MockitoBean.java")
392+
.addSourceFile("testdata/springboot-annotations/MockitoSpyBean.java")
391393
.addSourceLines(
392394
"Foo.java",
393395
"package com.uber;",
@@ -406,7 +408,13 @@ public void springTestAutowiredFieldTest() {
406408
"import org.junit.jupiter.api.Test;",
407409
"import org.springframework.boot.test.mock.mockito.SpyBean;",
408410
"import org.springframework.boot.test.mock.mockito.MockBean;",
411+
"import org.springframework.test.context.bean.override.mockito.MockitoBean;",
412+
"import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;",
409413
"public class TestCase {",
414+
" @MockitoSpyBean",
415+
" private Foo sf62Spy;", // Initialized by spring test (via Mockito).
416+
" @MockitoBean",
417+
" private Foo sf62Mock;", // Initialized by spring test (via Mockito).
410418
" @SpyBean",
411419
" private Foo spy;", // Initialized by spring test (via Mockito).
412420
" @MockBean",
@@ -415,6 +423,8 @@ public void springTestAutowiredFieldTest() {
415423
" void springTest() {",
416424
" spy.setBar(\"hello\");",
417425
" mock.setBar(\"hello\");",
426+
" sf62Spy.setBar(\"hello\");",
427+
" sf62Mock.setBar(\"hello\");",
418428
" }",
419429
"}")
420430
.doTest();
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.springframework.test.context.bean.override.mockito;
2+
3+
import java.lang.annotation.Documented;
4+
import java.lang.annotation.ElementType;
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.RetentionPolicy;
7+
import java.lang.annotation.Target;
8+
9+
@Target({ElementType.TYPE, ElementType.FIELD})
10+
@Retention(RetentionPolicy.RUNTIME)
11+
@Documented
12+
public @interface MockitoBean {
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.springframework.test.context.bean.override.mockito;
2+
3+
import java.lang.annotation.Documented;
4+
import java.lang.annotation.ElementType;
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.RetentionPolicy;
7+
import java.lang.annotation.Target;
8+
9+
@Target({ElementType.TYPE, ElementType.FIELD})
10+
@Retention(RetentionPolicy.RUNTIME)
11+
@Documented
12+
public @interface MockitoSpyBean {
13+
}

0 commit comments

Comments
 (0)