Junit Assert—将两个Java对象转换为XML,并将它们作为XML进行断言

Junit Assert—将两个Java对象转换为XML,并将它们作为XML进行断言,junit,marshalling,assert,Junit,Marshalling,Assert,我必须编写一个Junit测试,在这里我必须比较两个XML文档。最初,这两个文档都是Java对象。我不知道如何将它们转换为XML并进行比较 这是我目前掌握的代码: Actual RsActual = exchange.getIn().getBody(Actual.class); ExpectedRs expectedRs = new ExpectedRs(); String newRs=FileUtils.getFileContent("src/test/resources/Test/Expect

我必须编写一个Junit测试,在这里我必须比较两个XML文档。最初,这两个文档都是Java对象。我不知道如何将它们转换为XML并进行比较

这是我目前掌握的代码:

Actual RsActual = exchange.getIn().getBody(Actual.class);
ExpectedRs expectedRs = new ExpectedRs();
String newRs=FileUtils.getFileContent("src/test/resources/Test/ExpectedRs.xml");
expectedRs.setXYZField(newRs.toString());
Assert.assertEquals(expectedRs.getXYZField(), RsActual.getXYZField());

这里有几种不同的可能解决方案。最明显的是使用XML映射器将每个对象转换为字符串形式的XML文档,然后执行简单的等式断言

这是一个使用Jackson的XmlMapper类型的示例:

XmlMapper mapper = new XmlMapper();
final String expectedString = mapper.writeValueAsString(expectedRs);
final String actualString = mapper.writeValueAsString(RsActual);
assertThat(actualString, equalTo(expectedString));
只有当您的两种类型
Actual
ExpectedRs
生成完全相同的XML时,这才有效

或者,您可以使用xml映射器将预期文档转换为对象,并使用对象的
equals()
方法来比较这两件事:

XmlMapper mapper = new XmlMapper();
ExpectedRs expectedRs = mapper.readValue(newRs, ExpectedRs.class);
assertThat(RsActual, equalTo(expectedRs));
您还可以使用一个名为