@@ -47,13 +47,27 @@ void shouldGetFieldsIncludingParents() throws NoSuchFieldException {
47
47
List <Field > allFields = FieldUtils .getFieldsIncludingParents (Class3 .class );
48
48
49
49
// then
50
- assertThat (allFields , hasSize (6 ));
51
- assertThat (allFields .get (0 ), equalTo (Class1 .class .getDeclaredField ("C1A" )));
52
- assertThat (allFields .get (1 ), equalTo (Class1 .class .getDeclaredField ("c1b" )));
53
- assertThat (allFields .get (2 ), equalTo (Class2 .class .getDeclaredField ("c2a" )));
54
- assertThat (allFields .get (3 ), equalTo (Class2 .class .getDeclaredField ("c2b" )));
55
- assertThat (allFields .get (4 ), equalTo (Class3 .class .getDeclaredField ("c3a" )));
56
- assertThat (allFields .get (5 ), equalTo (Class3 .class .getDeclaredField ("c3b" )));
50
+ assertThat (allFields .size (), greaterThanOrEqualTo (6 ));
51
+ List <Field > expectedFields = new ArrayList <>();
52
+ expectedFields .add (Class1 .class .getDeclaredField ("C1A" ));
53
+ expectedFields .add (Class1 .class .getDeclaredField ("c1b" ));
54
+ expectedFields .add (Class2 .class .getDeclaredField ("c2a" ));
55
+ expectedFields .add (Class2 .class .getDeclaredField ("c2b" ));
56
+ expectedFields .add (Class3 .class .getDeclaredField ("c3a" ));
57
+ expectedFields .add (Class3 .class .getDeclaredField ("c3b" ));
58
+
59
+ Iterator <Field > expectedFieldsIterator = expectedFields .iterator ();
60
+ Field expectedField = expectedFieldsIterator .next ();
61
+ for (Field field : allFields ) {
62
+ if (field .equals (expectedField )) {
63
+ expectedField = expectedFieldsIterator .hasNext () ? expectedFieldsIterator .next () : null ;
64
+ }
65
+ }
66
+
67
+ if (expectedFieldsIterator .hasNext ()) {
68
+ throw new IllegalStateException ("Could not match all fields!\n Expected: " + expectedFields
69
+ + "\n Actual: " + allFields );
70
+ }
57
71
}
58
72
59
73
@ Test
@@ -74,7 +88,7 @@ void shouldGetAllFieldsSatisfyingFilter() throws NoSuchFieldException {
74
88
void shouldGetAllFieldsWithFilterAndParentsLast () throws NoSuchFieldException {
75
89
// given / when
76
90
List <Field > allFields = FieldUtils .getFieldsIncludingParents (Class3 .class ,
77
- field -> !field .getName ().endsWith ("a" ), false );
91
+ field -> !field .getName ().endsWith ("a" ) && ! field . isSynthetic () , false );
78
92
79
93
// then
80
94
assertThat (allFields , hasSize (4 ));
0 commit comments