21
21
import org .mockito .Mockito ;
22
22
import org .mockito .Spy ;
23
23
import org .mockito .internal .configuration .InjectingAnnotationEngine ;
24
- import org .mockito .internal .util .reflection .Fields ;
25
24
import org .mockito .internal .util .reflection .InstanceField ;
26
25
import org .simplify4u .slf4jmock .LoggerMock ;
27
26
import org .simplify4u .slf4jmock .MDCMock ;
30
29
import org .slf4j .Logger ;
31
30
import org .slf4j .spi .MDCAdapter ;
32
31
32
+ import java .lang .reflect .Field ;
33
+ import java .util .ArrayList ;
33
34
import java .util .List ;
34
35
import java .util .Map ;
35
36
import java .util .Optional ;
@@ -66,9 +67,19 @@ public AutoCloseable process(Class<?> clazz, Object testInstance) {
66
67
};
67
68
}
68
69
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
+
69
80
private static InstanceField prepareSpyLogger (Object testInstance ) {
70
81
71
- List <InstanceField > spyMocks = Fields . allDeclaredFieldsOf (testInstance ). instanceFields ( )
82
+ List <InstanceField > spyMocks = allDeclaredFieldsOf (testInstance )
72
83
.stream ()
73
84
.filter (field -> field .jdkField ().getType () == Logger .class )
74
85
.filter (field -> field .isAnnotatedBy (Spy .class ))
@@ -87,7 +98,7 @@ private static InstanceField prepareSpyLogger(Object testInstance) {
87
98
}
88
99
89
100
private static Optional <MDCAdapter > findMDCMock (Object testInstance ) {
90
- List <InstanceField > mdcFields = Fields . allDeclaredFieldsOf (testInstance ). instanceFields ( )
101
+ List <InstanceField > mdcFields = allDeclaredFieldsOf (testInstance )
91
102
.stream ()
92
103
.filter (instanceField -> instanceField .jdkField ().getType () == MDCAdapter .class )
93
104
.filter (instanceField -> instanceField .isAnnotatedBy (Mock .class ))
@@ -107,15 +118,15 @@ private static Optional<MDCAdapter> findMDCMock(Object testInstance) {
107
118
}
108
119
109
120
private static List <InstanceField > findClassUnderTest (Object testInstance ) {
110
- return Fields . allDeclaredFieldsOf (testInstance ). instanceFields ( )
121
+ return allDeclaredFieldsOf (testInstance )
111
122
.stream ()
112
123
.filter (instanceField -> instanceField .isAnnotatedBy (InjectMocks .class ))
113
124
.collect (Collectors .toList ());
114
125
}
115
126
116
127
private static Map <String , Logger > findLoggersMocks (Object testInstance , InstanceField spyToSet ) {
117
128
118
- Map <String , Logger > loggerMocks = Fields . allDeclaredFieldsOf (testInstance ). instanceFields ( )
129
+ Map <String , Logger > loggerMocks = allDeclaredFieldsOf (testInstance )
119
130
.stream ()
120
131
.filter (field -> field .jdkField ().getType () == Logger .class )
121
132
.filter (field -> field .isAnnotatedBy (Mock .class ) || field .isAnnotatedBy (Spy .class ))
@@ -137,8 +148,7 @@ private static Map<String, Logger> findLoggersMocks(Object testInstance, Instanc
137
148
138
149
List <InstanceField > loggersUnderTest = classesUnderTest .stream ()
139
150
.map (InstanceField ::read )
140
- .map (Fields ::allDeclaredFieldsOf )
141
- .map (Fields .InstanceFields ::instanceFields )
151
+ .map (LoggerAnnotationEngine ::allDeclaredFieldsOf )
142
152
.flatMap (List ::stream )
143
153
.filter (field -> field .jdkField ().getType () == Logger .class )
144
154
.collect (Collectors .toList ());
0 commit comments