В настоящее время я пишу тестовые примеры, используя TestNg. Я заполняю объекты, используя PodamFactory. У меня есть структура тестового случая.Является Java jackson ObjectWriter.ObjectWriter.writeValueAsString (obj); стабильный?
@Test
public void testIt(){
ARespObject resp = PodamFactory.manufacturePojo(ARespObject.class);
String responseXml = new JaxbStringTransformer().transform(resp);
// a new object with all the same data
ARespObject respActual = responder.getObj(responseXml);
Assert.assertTrue(TestUtils.areEqual(respActual , resp));
}
public static <T extends Object> boolean areEqual(T sourceObj, T target) {
if (sourceObj == null && target == null) {
return true;
}
if (sourceObj == target) {
return true;
}
if (sourceObj.getClass() != target.getClass()) {
return false;
}
if (sourceObj != null && target != null) {
return stringifyObject(sourceObj).equals(stringifyObject(target));
}
return false;
}
public static String stringifyObject(Object obj) {
String result = "";
ObjectWriter ow = new JaxbJacksonObjectMapper().writer().withDefaultPrettyPrinter();
try {
result = ow.writeValueAsString(obj);
} catch (JsonGenerationException e1) {
LOG.error(e1);
} catch (JsonMappingException e1) {
LOG.error("JsonMappingException: " + e1);
} catch (IOException e1) {
LOG.error("IOException: " + e1);
}
return result;
}
мне нужно знать, если writeValueAsString (объект) всегда будет обеспечивать такую же структуру для обоих объектов (то есть. Его выход будет стабильным) и после
stringifyObject(sourceObj).equals(stringifyObject(target));
является действительным проверка. Меня беспокоит, будет ли он когда-либо давать мне различный порядок переменных внутри ARespObject.
Я был бы обеспокоен порядками элементов в массивах/списках. –