2

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

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

我想知道 Java 代码的总行数——包括在 JSP 中找到的那些行——所以我可以获得 Java 代码的全面代码覆盖率,无论是在 JSP 中还是在 Java 类中。有一些东西可以跟踪将帮助我宣传单元测试。

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

4

1 回答 1

0

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

  • 没有人打算测试 scriptlet 的代码覆盖率,因为就像您提到的那样,scriptlet 是可怕的可憎之物。
  • 现在还没有编写 Scriptlet,因此不太可能有适合该要求的工具(开源/商业)。

我能想到的一些方法

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

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

可能有另一种方法来解决这个问题。您可以使用 google CodePro 之类的工具来审核您的 JSP 文件。尝试创建一个禁止 JSP scriptlet 的自定义规则。

于 2012-12-19T21:19:42.727 回答