From 16db07a1513bdccee72fa165e8409ae91bae9d83 Mon Sep 17 00:00:00 2001 From: Yihen Liu Date: Thu, 24 Nov 2022 21:36:18 -0600 Subject: [PATCH] fixed flaky test --- .../commons/util/MetaFieldUtil.java | 10 +++++++++- .../commons/util/MetaFieldUtilTest.java | 20 +++++++++---------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/ch-commons-util/src/main/java/com/cloudhopper/commons/util/MetaFieldUtil.java b/ch-commons-util/src/main/java/com/cloudhopper/commons/util/MetaFieldUtil.java index a2b53401..aa03491d 100644 --- a/ch-commons-util/src/main/java/com/cloudhopper/commons/util/MetaFieldUtil.java +++ b/ch-commons-util/src/main/java/com/cloudhopper/commons/util/MetaFieldUtil.java @@ -22,6 +22,8 @@ import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; import java.util.concurrent.atomic.AtomicReference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -173,7 +175,13 @@ protected static MetaFieldInfo[] internalToMetaFieldInfoArray(Class type, Object for (Class classType : hierarchy) { // begin search for each field (variable) - for (Field f : classType.getDeclaredFields()) { + Field[] fields = classType.getDeclaredFields(); + Arrays.sort(fields, new Comparator() { + public int compare(Field a, Field b) { + return a.getName().compareTo(b.getName()); + } + }); + for (Field f : fields) { // is this field marked as a MetaField? if (f.isAnnotationPresent(MetaField.class)) { diff --git a/ch-commons-util/src/test/java/com/cloudhopper/commons/util/MetaFieldUtilTest.java b/ch-commons-util/src/test/java/com/cloudhopper/commons/util/MetaFieldUtilTest.java index 4bb76fc8..6225c347 100644 --- a/ch-commons-util/src/test/java/com/cloudhopper/commons/util/MetaFieldUtilTest.java +++ b/ch-commons-util/src/test/java/com/cloudhopper/commons/util/MetaFieldUtilTest.java @@ -45,14 +45,14 @@ public void toMetaFieldInfoArray() throws Exception { Administrator emp = new Administrator(); MetaFieldInfo[] fields = MetaFieldUtil.toMetaFieldInfoArray(emp); Assert.assertEquals(12, fields.length); - Assert.assertEquals("First Name", fields[0].name); - Assert.assertEquals("Last Name", fields[1].name); - Assert.assertEquals("email", fields[2].name); - Assert.assertEquals("ID", fields[3].name); - Assert.assertEquals("Active?", fields[4].name); + Assert.assertEquals("email", fields[0].name); + Assert.assertEquals("First Name", fields[1].name); + Assert.assertEquals("ID", fields[2].name); + Assert.assertEquals("Active?", fields[3].name); + Assert.assertEquals("Last Name", fields[4].name); Assert.assertEquals("loginCounter", fields[5].name); - Assert.assertEquals("The first name of this user", fields[0].description); - Assert.assertEquals("", fields[1].description); + Assert.assertEquals("The first name of this user", fields[1].description); + Assert.assertEquals("", fields[0].description); Assert.assertEquals("", fields[2].description); // set some values emp.setFirstName("John"); @@ -61,9 +61,9 @@ public void toMetaFieldInfoArray() throws Exception { //for (MetaFieldInfo field : fields) { // logger.debug("field name=" + field.name + ", value=" + field.value + ", description=" + field.description); //} - Assert.assertEquals("John", fields[0].value); - Assert.assertEquals("Doe", fields[1].value); - Assert.assertEquals("EMPTY", fields[2].value); + Assert.assertEquals("EMPTY", fields[0].value); + Assert.assertEquals("John", fields[1].value); + Assert.assertEquals("Doe", fields[4].value); }