JAXB тест бобы ручной работы - PullRequest
4 голосов
/ 06 марта 2012

У меня есть большая куча JAXB-аннотированных файлов, созданных вручную, и некоторые xsd-файлы, созданные вручную. У меня также есть несколько примеров XML-файлов, которые должны создавать большинство компонентов JAXB и устанавливать большинство полей.

Как я могу проверить, установлены ли все важные (95%) атрибуты? Я не хочу проверять каждый атрибут каждого компонента вручную.

Могу ли я также или в качестве альтернативы проверить, соответствуют ли созданные вручную бобы файлам xsd?

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

Есть несколько способов справиться с этим, которые в итоге должны предоставить вам некоторую автоматизацию;но все зависит от того, насколько сложны ваши классы и XSD.

Я бы начал с использования schemagen JAXB против набора классов, который у вас уже есть.Это может потребовать дополнительных аннотаций, которые вам, возможно, придется добавить в текущую кодовую базу.Имея этот XSD в руках, вы можете, в основном вручную, сравнить два XSD, чтобы увидеть, схожи ли они.Все может быть сложно, если в вашей модели XSD используются варианты, все, абстракции, группы и т. Д.

Затем я бы использовал инструмент XSD:

  • , чтобы сгенерировать все возможные XPath из этих двух наборов для заданных корневых элементов, чтобы обеспечить одинаковое покрытие.
  • для автоматической генерации образцов XML с использованием одного из XSD в зависимости от того, какой из них является вашей золотой копией, а затем проверки его с помощью другого XSD - для выявления несоответствий, а также для дешифровки XML с использованием существующего кода.

После разбора, как описал Блейз, маршаллизировать и сравнивать (в идеале использовать сравнение XML с учетом схемы, затем с учетом XML, сравнение текста, скорее всего, будет бесполезным).

1 голос
/ 06 марта 2012

Вы можете разархивировать управляющие XML-документы и затем перенаправить их обратно в XML. Затем сравните два XML-документа, чтобы убедиться, что они содержат одинаковое содержимое. Это подтвердит правильность рассмотрения в оба конца.

...