【问题标题】:Generate Ember code coverage for a Selenium test run为 Selenium 测试运行生成 Ember 代码覆盖率
【发布时间】:2020-08-28 22:58:44
【问题描述】:

有谁知道如何通过 Selenium 测试生成 Ember 代码覆盖率指标?我有几个用 Groovy/Java 编写的测试。

我发现有人在伊斯坦布尔做这件事的文档。一个例子是Front End Javascript Test Coverage with Istanbul Selenium

还有一个Ember CLI Code Coverage 工具,它以伊斯坦布尔生产的仪器为基础。然而,从我目前收集到的信息来看,这个工具似乎完全围绕着伊斯坦布尔工具,因此只允许在构建时间之前为 ember 单元和集成测试生成代码覆盖率统计信息。它存储自己的从伊斯坦布尔结果到 Ember 代码的映射的位置并不明显,至少对于像我这样的 Java 开发人员来说不是。

我正在寻找一种方法来生成仅供内部使用的 war 文件,该文件同时具有伊斯坦布尔检测和到 ember 代码的映射,并且 Selenium 可以触发以生成 Ember 代码覆盖率报告。任何有关如何做到这一点的见解将不胜感激。

【问题讨论】:

    标签: selenium ember.js istanbul ember-cli-code-coverage


    【解决方案1】:

    事实证明,上述观点没有解决的主要障碍不是 Ember 本身,它基本上只是 Javascript。问题在于 Ember 是基于较新的 ES6 版本的 Javascript,而伊斯坦布尔的原始版本是为 ES5 编写的。

    对于 ES6 工具,用于跨浏览器兼容性的应用程序 Babel 有一个可用的 Istanbul 插件。这个Istanbul tutorial 展示了如何将它用于unit 测试。诀窍是弄清楚如何引导检测过程以将检测代码放入一个war文件,然后将其分派到浏览器可以访问的服务器。 (我们的 Ember 专家发现了这一点,因此我无法在此回复中概述该解决方案。)

    一旦服务器使用您的 Selenium 测试可以命中的 war 文件运行,您必须将代码添加到测试的末尾(就在它们离开该站点之前)以访问 window.__coverage__ 对象并将其输出到在每个测试会话结束时归档。有关如何执行此操作的示例,请参阅类似问题的答案:https://sqa.stackexchange.com/a/41715/29877

    假设您编写该代码以将一个或多个覆盖率文件输出到名为“usage”的目录并在其旁边创建另一个名为“coverage”的目录。然后,您可以从它们的公共父目录运行此命令,以在“coverage”目录中生成基本的 html 报告:

    nyc report --exclude-after-remap=false --report-dir=./coverage --reporter=html -t ./usage
    

    (请参阅install the nyc utility 的这些说明。)

    现在您可以通过在浏览器中打开 coverage/index.html 来查看该报告。当然,nyc 有几个 --reporter 选项可用于生成其他类型的报告。

    【讨论】:

      猜你喜欢
      • 2023-02-16
      • 2017-05-23
      • 2017-09-03
      • 2012-01-07
      • 2019-09-02
      • 2017-04-24
      • 2023-03-27
      • 2017-02-11
      • 1970-01-01
      相关资源
      最近更新 更多