Коллеги, добрый день.
Возникла необходимость решения такой задачи:
Есть некий SOAP сервис, который довольно таки часто модифицируется
Есть набор “эталонных” входящих xml-файлов и набор “эталонных” ответов
Соответственно при каждом обновлении сервиса, необходимо отправить входящие файлы - получить ответы и сравнить их с эталонными. Разницу в ответах сохранить в отдельный файл - например xslx
В чем возникла трудность - большинство библиотек которые я нахожу - позволяют поставить assertion или на значение отдельного тега или на все содержимое файла. А именно найти разницу в значение не выходит.
Возникла мысль, сохранять распарсенную xml в какой нибудь map, где ключ будет имя тега - а значение - понятно. значение этого тега. И потом уже сравнивать две maps.
Но такое решение мне кажется спорным. Может быть кто то решал похожую задачу с подобным toolbox (изменить его я не могу). Или есть какие то соображения?
Вот такой совет я видел Comparing two XML strings/files in Groovy/Java - Stack Overflow
Но похоже он актуален для версии XMLUnit 1.5 (в 2.3 не взлетело)
Не совсем понял.
“позволяют поставить assertion или на значение отдельного тега” и “найти разницу в значение не выходит” - это как? Ставь ассершен, сравнивай с эталонным ответом. В SoapUI ты получишь что-то типа “expected - Vasya, found - Petya” или что-то вроде.
У тебя значения настолько огромны, что надо видеть именно diff, а не эталонное и полученное значения?
Если да - то единственное, что могу предложить - это сделать скриптовый ассершен, который по фейлу скопирует значения в файлы, затем натравит на них какую-нить внешнюю тулзу, умеющую хавать командную строку для запуска и отдавать результат в файле, затем вычитать этот файл и результат подставить обратно в ассершен, если необходимо.