2016-04-11 3 views
0

2つのXMLドキュメントを比較する必要があるJunitテストを作成する必要があります。当初、これらの両方のドキュメントはJavaオブジェクトです。 XMLに変換して比較する方法がわかりません。Junit Assert - 2つのJavaオブジェクトをXMLに変換し、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()); 

答えて

0

ここではいくつかの異なる可能な解決策があります。最も明白なのは、各オブジェクトをXML文書に変換して文字列としてXMLマッパーを取得し、次に単純な等価アサーションを実行することです。

これは、ジャクソンのXmlMapperタイプを使用した例です。

XmlMapper mapper = new XmlMapper(); 
final String expectedString = mapper.writeValueAsString(expectedRs); 
final String actualString = mapper.writeValueAsString(RsActual); 
assertThat(actualString, equalTo(expectedString)); 

あなたの2種類ActualExpectedRsがまったく同じXMLを生成場合にのみ動作します。

あなたは、その代わりに、オブジェクトにあなたの期待文書を変換し、二つのものを比較するために、オブジェクトの equals()メソッドを使用するXMLマッパーを使用することができ

XmlMapper mapper = new XmlMapper(); 
ExpectedRs expectedRs = mapper.readValue(newRs, ExpectedRs.class); 
assertThat(RsActual, equalTo(expectedRs)); 

あなたはまた、格納されたXML文書に関するアサーションを簡素化し使用することができます文字列としてxmlUnit

というライブラリを使用しています
関連する問題