Как заглушить/издеваться над объектом XMLBeans для тестирования?

Я работаю с приложением, использующим Apache XMLBeans (интерфейсы для элементов структуры XML, расширяющие org.apache.xmlbeans.XmlObject, реализации для этих интерфейсов, расширяющие org.apache.xmlbeans.impl.values.XmlComplexContentImpl)

Я получил следующий вид функциональности:

  • Объект XML передается в метод с некоторыми данными
  • Based on this data, subcontent is generated for this XML object
    • using XML objects' addFoo() to add elements etc

Теперь я хотел бы протестировать эту функциональность, но я не уверен, что это лучший способ получить этот XML-объект для тестирования (я бы хотел, чтобы объект-заглушка/фиктивный объект поддерживал состояние поддерева, чтобы его можно было легко протестировать) . Некоторые варианты:

  • I tried instantiating these FooImpl implementation objects but they require reference to org.apache.xmlbeans.SchemaType sType
    • Is there some way to instantiate these?
    • Предоставление null/mocked SchemaType заканчивается NPE, когда что-то добавляется
  • Генерация классов-заглушек с несколькими необходимыми методами будет работать, но в итоге будет много (> 100) методов для генерации
  • Использование Mockito работает иначе, но чтобы легко проверить состояние древовидной структуры xml, мне нужно использовать doAnswer() и т. д.

Некоторые идеи?

бр, Токо


person Touko    schedule 31.07.2012    source источник


Ответы (2)


Я обнаружил, что ответ довольно прост: интерфейсы xmlbeans имеют фабричные классы для создания экземпляров bean-компонентов, например:

Address.Factory.newInstance()
person Touko    schedule 31.07.2012

Я знаю, что это не тот ответ, который вы ищете, но все равно вот он:

Не издевайтесь над теми, кого вы не контролируете

Использованная литература:

Вопрос к вам: что вы пытаетесь проверить? XML-бины Apache работают должным образом? Или вы пишете инструмент XML?

person Augusto    schedule 31.07.2012
comment
Хорошая точка зрения. Я пытаюсь проверить свою бизнес-функциональность, которая создает структуру XML с использованием XMLBeans. (Поэтому я ожидаю, что XMLBeans работает должным образом) - person Touko; 31.07.2012
comment
Надеюсь, я не звучу недружелюбно, но если ваша бизнес-логика заботится о XML, то вы можете писать только инструмент, связанный с XML. Если вы пишете любое другое приложение, это означает, что вы смешали свою бизнес-логику с связующим кодом, который соединяет ваше приложение с внешним миром, и вы можете прочитать о том, как их разделить. Хорошим ориентиром является гексагональная архитектура. - person Augusto; 31.07.2012
comment
Мое использование бизнес-функциональности было не очень хорошим. Конкретная функциональность, которую я тестирую, представляет собой разбиение на страницы сгенерированного XML-документа, поэтому она находится на стыке бизнес-логики и XML. - person Touko; 01.08.2012