为 Selenium 测试运行生成 Ember 代码覆盖率



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

我找到了人们在伊斯坦布尔这样做的文件。 一个例子是伊斯坦布尔硒的前端Javascript测试覆盖率。

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

我正在寻找一种方法来生成仅供内部使用的战争文件,该文件同时具有伊斯坦布尔仪器和与 ember 代码的映射,并且 Selenium 可以触发以生成 Ember 代码覆盖率报告。 有关如何执行此操作的任何见解将不胜感激。

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

对于 ES6 仪器,用于跨浏览器兼容性的应用程序 Babel 有一个可用的伊斯坦布尔插件。 这个伊斯坦布尔教程展示了如何将其用于单元测试。 诀窍是弄清楚如何引导检测过程,将检测的代码放入一个 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

(请参阅这些说明以安装 nyc 实用程序。

现在,您可以通过在浏览器中打开 coverage/index.html 来查看该报告。 当然,纽约市有几个报告者选项来制作其他类型的报告。

最新更新