2011-04-19 48 views
27

我想比较两个xml字符串在测试中,但由于空白,测试保持失败。XMLUnit是否有断言来忽略空格

@Test 
public void testForEquality() throws Exception { 
String myControlXML = "<msg><uuid>0x00435A8C</uuid></msg>"; 
String myTestXML = "<msg><uuid>0x00435A8C</uuid>  </msg>"; 
assertXMLEqual(myControlXML, myTestXML); 
Diff diff = new Diff(myControlXML, myTestXML); 
assertTrue(diff.similar()); 
} 
+1

想我应该看着5分钟以上XMLUnit.setIgnoreWhitespace(true); – Scott 2011-04-19 19:04:04

回答

36

是的,XMLUnit可以忽略空格。详情请参阅API documentation。您可以通过设置启用它:

XMLUnit.setIgnoreWhitespace(true) 
+1

雅,我发现我发布几分钟后,但它不会让我关闭这个问题。 – Scott 2011-04-21 11:35:02

+0

您现在可能已经知道了这一点,但在这一点上做标准的SO事情只是回答您自己的问题。 – studgeek 2013-01-27 00:38:45

1

该API已更改XMLUnit 2.x。现在

,单元测试,你可以忽略空格与hamcrest匹配,像这样:

import static org.hamcrest.MatcherAssert.assertThat; 
import static org.xmlunit.matchers.CompareMatcher.isIdenticalTo; 
... 
assertThat(actual, isIdenticalTo(expected).ignoreWhitespace()); 

或者,在与建筑商API直接:

import org.xmlunit.builder.DiffBuilder; 
... 
boolean areDifferent = DiffBuilder.compare(left).withTest(right) 
            .ignoreWhitespace().build().hasDifferences();