识别并计算JSP中的Java代码行以帮助驱动单元测试

时间:2012-12-19 20:34:52

标签: java unit-testing jsp intellij-idea code-coverage

我正在尝试为几个不同团队积极开展工作的大型代码库增加单元测试。大部分代码都是继承的,并且没有一个代码开始进行单元测试。此外,在JSP中查找大量Java代码是很常见的。我一直在倡导开发人员将Java代码放在JSP中,而是将其放在Java类中,以使单元测试更容易(并且由于其他原因,这是有道理的。)

虽然我可以通过我们的单元测试获得Java类中代码的代码覆盖率数据,但我无法知道JSP中存在多少Java代码< / strong>(现有单元测试的代码覆盖率为零)。我们正在使用最新版本的Intellij,但我认为解决方案不一定需要受到限制。

我想知道Java代码的总行数 - 包括在JSP中找到的那些行 - 所以我可以获得Java代码的综合代码覆盖率,无论是在JSP还是Java类中。有东西要跟踪将有助于我传播单元测试。

是否有自动获取Java代码总行数的方法,无论它是否存在于JSP或Java类中?

1 个答案:

答案 0 :(得分:0)

我不知道一种自动化的方法,如果有人在那里我会感到惊讶。

  • 没有人打算像以前那样测试scriptlet的代码覆盖率 你提到过,小脚本是可怕的可憎之物。
  • 这些天不写Scriptlet,所以不太可能 那里有一个适合的工具(开源/商业) 法案。

我能想到的一些方法

  • 编写一个废弃scriptlet的HTML解析器。这有可能 结果很难,因为我怀疑<%= //code =>会是 转换成他们的文本形式。它们不是有效的标签,但您仍然可以从一些解析中受益。
  • 使用Jasper或等效框架编译JSP并使用它们 用于获取有关JSP页面的scriptlet信息的API方法。 ( 生病 承认寻找可以的API方法/成员变量 透露这些数据并非无足轻重。 )
  • 编写自己的解析器,扫描文件中的<%=个字符 并开始计算遇到的每个/ n和/ r / n字符的代码行,直到%>为止 达到。

我认为编写自己的解析器可能是最简单的方法。

可能有另一种方法来解决问题。您可以使用google CodePro等工具来审核JSP文件。尝试禁止JSP scriptlet的creating a custom rule