2121import org .mockito .Mockito ;
2222import org .mockito .Spy ;
2323import org .mockito .internal .configuration .InjectingAnnotationEngine ;
24- import org .mockito .internal .util .reflection .Fields ;
2524import org .mockito .internal .util .reflection .InstanceField ;
2625import org .simplify4u .slf4jmock .LoggerMock ;
2726import org .simplify4u .slf4jmock .MDCMock ;
3029import org .slf4j .Logger ;
3130import org .slf4j .spi .MDCAdapter ;
3231
32+ import java .lang .reflect .Field ;
33+ import java .util .ArrayList ;
3334import java .util .List ;
3435import java .util .Map ;
3536import java .util .Optional ;
@@ -66,9 +67,19 @@ public AutoCloseable process(Class<?> clazz, Object testInstance) {
6667 };
6768 }
6869
70+ private static List <InstanceField > allDeclaredFieldsOf (Object testInstance ) {
71+ List <InstanceField > result = new ArrayList <>();
72+ for (Class <?> clazz = testInstance .getClass (); clazz != Object .class ; clazz = clazz .getSuperclass ()) {
73+ for (Field field : clazz .getDeclaredFields ()) {
74+ result .add (new InstanceField (field , testInstance ));
75+ }
76+ }
77+ return result ;
78+ }
79+
6980 private static InstanceField prepareSpyLogger (Object testInstance ) {
7081
71- List <InstanceField > spyMocks = Fields . allDeclaredFieldsOf (testInstance ). instanceFields ( )
82+ List <InstanceField > spyMocks = allDeclaredFieldsOf (testInstance )
7283 .stream ()
7384 .filter (field -> field .jdkField ().getType () == Logger .class )
7485 .filter (field -> field .isAnnotatedBy (Spy .class ))
@@ -87,7 +98,7 @@ private static InstanceField prepareSpyLogger(Object testInstance) {
8798 }
8899
89100 private static Optional <MDCAdapter > findMDCMock (Object testInstance ) {
90- List <InstanceField > mdcFields = Fields . allDeclaredFieldsOf (testInstance ). instanceFields ( )
101+ List <InstanceField > mdcFields = allDeclaredFieldsOf (testInstance )
91102 .stream ()
92103 .filter (instanceField -> instanceField .jdkField ().getType () == MDCAdapter .class )
93104 .filter (instanceField -> instanceField .isAnnotatedBy (Mock .class ))
@@ -107,15 +118,15 @@ private static Optional<MDCAdapter> findMDCMock(Object testInstance) {
107118 }
108119
109120 private static List <InstanceField > findClassUnderTest (Object testInstance ) {
110- return Fields . allDeclaredFieldsOf (testInstance ). instanceFields ( )
121+ return allDeclaredFieldsOf (testInstance )
111122 .stream ()
112123 .filter (instanceField -> instanceField .isAnnotatedBy (InjectMocks .class ))
113124 .collect (Collectors .toList ());
114125 }
115126
116127 private static Map <String , Logger > findLoggersMocks (Object testInstance , InstanceField spyToSet ) {
117128
118- Map <String , Logger > loggerMocks = Fields . allDeclaredFieldsOf (testInstance ). instanceFields ( )
129+ Map <String , Logger > loggerMocks = allDeclaredFieldsOf (testInstance )
119130 .stream ()
120131 .filter (field -> field .jdkField ().getType () == Logger .class )
121132 .filter (field -> field .isAnnotatedBy (Mock .class ) || field .isAnnotatedBy (Spy .class ))
@@ -137,8 +148,7 @@ private static Map<String, Logger> findLoggersMocks(Object testInstance, Instanc
137148
138149 List <InstanceField > loggersUnderTest = classesUnderTest .stream ()
139150 .map (InstanceField ::read )
140- .map (Fields ::allDeclaredFieldsOf )
141- .map (Fields .InstanceFields ::instanceFields )
151+ .map (LoggerAnnotationEngine ::allDeclaredFieldsOf )
142152 .flatMap (List ::stream )
143153 .filter (field -> field .jdkField ().getType () == Logger .class )
144154 .collect (Collectors .toList ());
0 commit comments