Как использовать XMLUnit для сравнения только определенных частей файлов? - PullRequest
1 голос
/ 05 декабря 2009

Как использовать XMLUnit для сравнения 2 или более узлов (с одинаковыми именами) в 2 разных файлах?

У меня есть 2 XML-файла, которые выглядят так:

<SearchResults>
  <result type="header"> ...ignore this.... </result>
  <result type="secondheader">...ignore this....</result>
  <result>....data1....</result>
  <result>....data2....</result>
  <result>....data3....</result>
  <result type="footer">...ignore this....</result>
</SearchResults>

А вот мой метод, который я использую для сравнения до сих пор. Проблема в том, что я не хочу сравнивать части xml, которые имеют тег результата, с любым видом атрибута на них. Как я могу это сделать?

public void compareXMLEqualityToLastTest() throws Exception { 
  System.out.println("Checking differences.");
  File firstFile = new File("C:\\Eclipse\\workspace\\Tests\\log\\" +
              "Test_2.xml");
  String file1sub = readXMLFromFile(firstFile);
  File secondFile= new File("C:\\Eclipse\\workspace\\Tests\\log\\" +
              "Test_1.xml");
  String file2sub = readXMLFromFile(secondFile);
  assertXMLNotEqual("files are equal", file1sub, file2sub );
  assertXMLEqual("files are not equal", file1sub, file2sub );
}

Я нашел смутное предложение использовать ElementQualifier на странице 5 руководства по XMLUnit, но пока не понимаю. Я не знаю, как сказать, какие узлы сравнивать.

Diff myDiff = new Diff(file1sub, file2sub);
      myDiff.overrideElementQualifier(new ElementNameAndTextQualifier());
      assertXMLEqual("But they are equal when an ElementQualifier controls " +
    "which test element is compared with each control element", myDiff, true);

Должен ли я следовать этому маршруту и ​​добавить этот класс в свой проект?

org.apache.wink.test.diff.DiffWithAttributeQualifier

Мне пришла в голову мысль поместить узлы в NodeList, а затем использовать org.custommonkey.xmlunit.compareNodeList , но это похоже на хак Есть ли лучший способ, чем это?

1 Ответ

3 голосов
/ 05 декабря 2009

Не проще ли использовать XPath Tests? Я представляю что-то вроде этого, чтобы работать

//select all elements which don't have a type attribute
String xpath = "//result[not(@type)]";
assertXpathsEqual(xpath, file1sub, xpath, file1sub2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...