【问题标题】:Identify and count lines of Java code in JSPs to help drive unit testing识别和计算 JSP 中的 Java 代码行数以帮助推动单元测试
【发布时间】:2012-12-07 07:06:54
【问题描述】:

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

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

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

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

【问题讨论】:

  • 查看clocSONAR。当然,您必须将它们合并到您的构建工具中。

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


【解决方案1】:

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

  • 没有人打算测试 scriptlet 的代码覆盖率,因为 你提到过,scriptlet 是可怕的可憎之物。
  • 现在没有编写 Scriptlet,因此不太可能 有一个适合的工具(开源/商业) 账单。

我能想到的一些方法

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

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

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

【讨论】:

  • 什么,你不测试你的可憎性?你怎么知道他们是否正确?
  • 我宁愿将它们移至 JSP 自定义标签,也不愿花时间测试它们。如果您确实想测试 JSP 页面的结果,那么无论如何您都需要一个像 selenium 这样的工具。跟踪 scriptlet 的行数是一回事。尝试在 scriptlet 上获取代码覆盖率是另一回事。
猜你喜欢
  • 2014-12-26
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多