1

有没有人尝试过构建 Velocity 模板引擎扩展或插件?

我们的团队大量使用 Velocity 模板语言进行 API 输入/输出转换。由于 VTL 代码中有很多复杂的逻辑,我们实现了一种对 VTL 代码进行单元测试的方法。然而当前的问题是没有办法测量这些单元测试的代码覆盖率。我们想实现一个 VTL 引擎扩展来计算执行这些测试时的覆盖率。有没有人有任何见解或类似的经验?

谢谢!!

4

1 回答 1

1

Velocity还没有这个功能。

同时,您可以:

  • 在Velocity JIRA上打开一个问题,以便它有机会包含在下一个版本中
  • 解决问题的方法:准备(自动!)模板的副本,其中每行都以带有文件和行号的注释作为前缀,并使用测试输出来关联覆盖率
  • patch Velocity 这样做,并不难:
    • 该类org.apache.velocity.runtime.parser.Node.java需要一个新的 int 字段,visited初始化为 0
    • 使每个方法在所有其他具有这种方法的解析器节点的所有方法中render()递增visitedrender()
    • 在测试用例之后,使用扩展类o.a.v.runtime.parser.visitor.BaseVisitor来收集每个模板的每个节点位置信息和渲染数量

如果您在最后一个选项中成功,请务必提交补丁!

于 2018-06-29T14:56:28.520 回答