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

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

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

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

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

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

最佳答案

我不知道有什么自动化方法,如果有的话我会很惊讶。

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

我能想到的一些方法

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

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

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

关于java - 识别和计算 JSP 中的 Java 代码行数以帮助驱动单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960707/

相关文章:

java - JFreeChart 和 Y 轴单位

angularjs - 如何在注入(inject)前模拟 Angular 模块?

java - 如何借助Session从Servlet通过Bean向JSP页面传递参数?

java - Spring Boot Web应用程序在WEB-INF中找不到图像

java - 如何确保我的应用程序不与其他使用 nfc 的应用程序冲突

java - 正则表达式接受正整数而不接受任何内容

java - 如何在java中设置八进制值?

java - 单元测试困境

unit-testing - Jasmine 监视调用外部方法的方法(Angular 2)

javascript - 合并JSP表中的重复行