【问题标题】:Accessibility of test coverage reports for blind people盲人测试覆盖率报告的可访问性
【发布时间】:2011-12-20 11:46:11
【问题描述】:

我目前正在帮助我的团队成员掌握我们的新项目和我们正在使用的工具。我们使用 Java 作为主要语言。我同事的一个特点是他是盲人。他主要使用 Emacs,并且在终端中运行 maven 目标。

在我完成实现之后,我发现检查我的测试覆盖率非常有用。我希望我的同事也能够检查覆盖范围。我有两种获取这些信息的方法:

  • 使用 IntelliJ 集成测试覆盖率(它使用 EMMA 并在每行旁边显示绿色、红色或黄色)。非常方便,因为我在运行测试后立即可以看到这些信息,无需进一步交互

    这对我的同事不起作用,因为他不能使用 IntelliJ,而且它可能无论如何也不起作用,因为没有覆盖信息的文本表示

  • 使用 Cobertura 报告。它们使用相同的概念绿/红线它们适用于宏信息,例如类中的整体覆盖率,但不适用于检查哪条线没有被覆盖。 其实他可以挖掘报告的HTML源代码,找出哪个有nbHitsUncovered类,但这似乎很不切实际。

我真的很想向他展示如何快速获取他的覆盖率数据。有人知道不依赖颜色即可显示覆盖范围的工具吗?还是我们必须自己写? (例如,通过转换 HTML 报告)

【问题讨论】:

  • 声纳可以显示代码覆盖率,不知道是不是比cobertura报告的更容易阅读:sonarsource.org/…
  • @Antoine。我删除了关于使用 FitNesse 的答案。抱歉,我没有回答你关于代码覆盖率的问题。
  • @oers 谢谢。我们已经在我们的项目中设置了声纳。不过,我从来没有在本地运行它,但我可以试一试。无论如何,声纳是我想和我的同事提出的一个话题。

标签: java accessibility code-coverage


【解决方案1】:

我是一个完全盲人的开发人员,我在 Windows 上使用 Jaws for Windows 屏幕阅读器完成我的工作,因此这不会完全映射到与您合作的开发人员。通过一点编程,看起来 cobertura 测试结果是最容易处理的。根据以下示例 XML 报告,应该不难组合一个快速的 Perl 脚本来检查命中计数为 0 的行。 https://raw.github.com/jenkinsci/cobertura-plugin/master/src/test/resources/hudson/plugins/cobertura/coverage-with-data.xml 我发现第 24 行是唯一一个执行 0 次的快速查找

Hits="0"

虽然我能够找出哪一行没有执行,但我不得不向上滚动很多次才能确定该行所在的类和方法。一个快速的 Perl 脚本可以消除向后滚动并提供该行所在的包、类和方法更有效。 我使用 Google Chrome 查看了一份 Emma HTML 报告示例,它非常易于访问。我可以分辨出哪些方法经过了全面测试,哪些没有。弄清楚哪些行已执行,哪些行未执行则更加困难。我可以判断一个方法没有 100% 执行,然后会在报告中导航到它。然后我不得不使用屏幕阅读器提供的击键来宣布每行代码的颜色。我忘记了确切的颜色名称,但我可以分辨出执行和未执行的行,因为我的屏幕阅读器将它们列为具有不同的颜色。这行得通,但速度很慢,因为我必须手动检查方法的每一行;由于我的屏幕阅读器无法自动宣布颜色变化,因此没有完全执行。我不确定您的开发人员会如何做同样的事情,因为我不知道他的确切辅助技术设置。

【讨论】:

  • 我的同事也在 Windows 上使用 Jaws 浏览网页,但使用 Cobertura 的 XML 输出似乎是最好的解决方案。
  • 好东西。工作已经为我们完成了!也许 XSLT 将帮助您以更易于访问的格式显示 XML 数据。
【解决方案2】:

我对 Antoine 进行了深入研究,因为我还在我的项目中使用了 SONAR 和 Cobertura,并且对您的问题很感兴趣。从我可以看到,当您告诉 ANT 任务生成“html”作为输出时,您可以获得所需的所有行信息,但正如您所指出的,它不是一种易于解析的格式(并且可能会发生变化)。

使用 SONAR,我告诉 Cobertura 输出“xml”,这会为我提供一个名为 coverage.xml 的文件,并带有输出。不幸的是,它不包含逐行数据,我在 Cobertura 文档中看不到任何 ANT task parameters 包含它。

对我来说,名为 cobertura.ser 的文件包含您需要的所有数据,但只有 HTML 报告会为您显示它,这对我来说很有意义。我相信您问题的答案可能在于尝试从 cobertura.ser 中提取所需的序列化数据。

查看源代码可以看到以下类

net.sourceforge.cobertura.reporting.html.HTMLReport
net.sourceforge.cobertura.reporting.xml.XMLReport

我怀疑您可以尝试做的是将 HTMLReport 的副本作为基础,并尝试编写与 XML 相同的输出,然后您可以出于自己的目的对其进行解析(或者只添加 HTMLReport 使用的相同方法调用) XML 报告)。我可以在HTMLReport 中看到字符串nbHitsUncovered,所以希望你只有一节课要写。

我在 Google 上四处搜索,没有看到有人这样做,但它看起来像是一个有用的增强功能。

【讨论】:

  • cobertura.ser 文件不是人类可读的。您必须运行报告才能理解它。但如果您告诉 format="xml",则 XML 可用。见:cobertura.sourceforge.net/introduction.html
  • 我没有安装 Cobertura,但我在网上找到的示例 XML 给出了每一行的命中数。如果我找到的 XML 是有效的,那么命中计数 0 应该提供您需要的所有信息。
  • @oers。是答案中提供的ANT task parameters 链接解释了“xml”和“html”报告输出的选项。请参阅标题为“cobertura-report 任务”的部分
【解决方案3】:

如何使用 GreaseMonkey 脚本搜索具有类 nbHitsUncovered 的所有行并添加一些包含所需信息的列表/表格到报告中?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多