2016-04-11 13 views
0

İki XML belgesini karşılaştırmam gereken bir Junit testi yazmam gerekiyor. Başlangıçta bu iki belge de Java Nesneleridir. Onları XML'e nasıl çevireceğimi ve onları nasıl kıyaslayacağımı bilmiyorum?Junit Assert - İki Java nesnesini XML'ye dönüştürme ve XML ile ilgili iddialar yapma

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()); 

cevap

0

burada birkaç farklı olası çözüm vardır:

Bu

var bugüne kadar koddur. En belirgin olanı, XML nesnelerinin her birini Strings olarak XML belgelerine dönüştürmek ve basit bir eşitlik iddiası yapmaktır. senin iki tür Actual ve ExpectedRs aynı XML üretmek eğer

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

Bu yalnızca çalışacaktır:

Bu

Jackson'un XmlMapper türünü kullanarak bir örnektir.

Sen alternatif olarak bir nesnenin içine beklenen belgeyi dönüştürmek için xml mapper kullanabilir ve iki şeyi karşılaştırmak için nesnenin equals() yöntemi kullanabilirsiniz:

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

Ayrıca saklanan XML belgelerinin ilgili iddialarını basitleştirmek kullanabilirsiniz Dize, xmlUnit

adlı kitaplığı kullanıyor