Как автоматически проверить, что xsd и сгенерированные классы синхронизированы?

#java #jaxb

#java #jaxb

Вопрос:

У меня есть файл схемы xml, и из него сгенерированы классы. Во время разработки xsd может измениться. Как я могу убедиться, что xsd и сгенерированные классы синхронизированы?

Существует возможность генерировать классы во время сборки с помощью maven. Используя это или нет, я хотел бы быть уверенным в модульном тестировании.

Спасибо и приветствую Steff

Комментарии:

1. Вы могли бы попытаться создать xml из ваших сгенерированных классов и проверить сгенерированный xml на соответствие xsd в модульном тестировании.

2. Я собирался сказать «отражение», но я бы предпочел повторно генерировать ваши классы из схемы в качестве тестовой зависимости в процессе сборки — таким образом, вам не придется реорганизовывать свой модульный тест каждый раз, когда вносятся изменения. Итак, iow, тест восстанавливает классы

3. Привет, flash, это хорошая идея, спасибо.

Ответ №1:

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

Однако я сомневаюсь во всем подходе. Компиляция схемы является частью процесса сборки, и она должна быть безупречной по дизайну. Вы не проверяете, что файлы Java «синхронизированы» со скомпилированными .class файлами, не так ли? То же самое должно быть и в случае компиляции схемы.

Комментарии:

1. Спасибо за ответ. Нет, я не проверяю сами файлы .class, но я мог бы проверить, представляют ли источники схему. Дело в том, что пока продукт находится в стадии разработки, схема не безупречна. Что ж, стабильность со временем растет.

Ответ №2:

Вы принудительно выполняете генерацию при каждой сборке. Или в соответствии с a Profile не выполнять его так много раз и увеличить время компиляции в разработке.

Здесь вы можете взглянуть на JAXB плагин для генерации источников каждый раз.

http://java.net/projects/maven-jaxb2-plugin/pages/Home

Комментарии:

1. Рекомендуемый плагин здесь: java.net/projects/maven-jaxb2-plugin/pages/Home