有没有人知道如何从Selenium测试中生成Ember代码覆盖率指标?我有几个用Groovy/Java编写的测试。
我发现有人在伊斯坦布尔这样做,其中一个例子是Front End Javascript Test Coverage with Istanbul Selenium。
还有一个Ember CLI Code Coverage工具,它构建在伊斯坦布尔产生的插装之上。然而,从我目前收集的信息来看,这个工具似乎完全围绕Istanbul插装,因此只允许在构建时间之前为ember单元和集成测试生成代码覆盖率统计信息。它在哪里存储自己的从Istanbul结果到Ember代码的Map并不明显。至少对像我这样的Java开发人员来说是这样。
我正在寻找一种方法来生成一个war文件,只供内部使用,它既有伊斯坦布尔测试工具,也有到ember代码的Map,而且Selenium可以触发它来生成Ember代码覆盖率报告。
1条答案
按热度按时间zysjyyx41#
事实证明,上述景点没有解决的主要障碍并不是Ember本身,它基本上只是Javascript。问题在于,Ember是基于较新的ES6版本的Javascript,而最初的伊斯坦布尔版本是为ES 5编写的。
对于ES6插装,用于跨浏览器兼容性的应用程序Babel有一个伊斯坦布尔插件可用。这个Istanbul tutorial展示了如何使用它进行***单元***测试。诀窍是弄清楚如何引导插装进程,以便将插装代码放入一个war文件中,然后可以将该文件调度到浏览器可以访问的服务器。(我们的EmberMaven发现了一个,所以我不能在这个回复中概述这个解决方案。)
一旦服务器运行了那个war文件,Selenium测试就可以找到它,你必须在测试的末尾添加代码(就在它们离开那个站点之前)来访问window.__coverage__对象,并在每个测试会话结束时将它输出到文件中。要了解如何做到这一点的示例,请参见对一个类似问题的回答:是的。
假设您编写了代码,将一个或多个覆盖率文件输出到一个名为“usage”的目录中,并在其旁边创建另一个名为“coverage”的目录。然后,您可以从它们的公共父目录运行以下命令,在“coverage”目录中生成一个基本的html报告:
(See安装nyc实用程序。)
现在,您可以在浏览器中打开coverage/index.html来查看该报告。当然,nyc有几个--reporter选项来生成其他类型的报告。