Плагин Velocity Template Engine или расширение?

Кто-нибудь пробовал создавать расширение или плагин для шаблонного движка Velocity?

Наша команда активно использует язык шаблонов Velocity для преобразования ввода-вывода API. Поскольку в коде VTL много сложной логики, мы реализовали способ модульного тестирования кода VTL. Однако текущая проблема заключается в том, что нет способа измерить охват кода этих модульных тестов. Мы хотим реализовать расширение VTL Engine для расчета покрытия при выполнении этих тестов. У кого-нибудь есть понимание или подобный опыт?

Спасибо!!

1 ответ

У Velocity пока нет этой функции.

Между тем, вы можете:

  • откройте вопрос о Velocity JIRA, чтобы получить возможность быть включенным в следующую версию
  • Обойти проблему: подготовить (автоматически!) копию ваших шаблонов, где каждая строка начинается с комментария с номером файла и строки, и использовать результаты тестов для сопоставления покрытия
  • Для этого исправим Velocity, это не так сложно:
    • org.apache.velocity.runtime.parser.Node.java классу нужно новое поле int, visited инициализируется до 0
    • сделать каждый render() приращение метода visited во всех render() метод всех других узлов синтаксического анализатора, которые имеют такой метод
    • после теста используйте расширение класса o.a.v.runtime.parser.visitor.BaseVisitor собрать для каждого вашего шаблона информацию о местоположении каждого узла и количестве визуализаций

И если вы преуспели в этом последнем варианте, обязательно отправьте патч!

Другие вопросы по тегам